Programing

Twig에서 클래스 상수에 액세스하는 방법은 무엇입니까?

lottogame 2020. 7. 5. 21:08
반응형

Twig에서 클래스 상수에 액세스하는 방법은 무엇입니까?


엔티티 클래스에는 몇 가지 클래스 상수가 있습니다.

class Entity {
    const TYPE_PERSON = 0;
    const TYPE_COMPANY = 1;
}

일반적인 PHP에서는 자주 사용 if($var == Entity::TYPE_PERSON)하며 Twig에서 이런 종류의 작업을하고 싶습니다. 가능합니까?


{% if var == constant('Namespace\\Entity::TYPE_PERSON') %}
{# or #}
{% if var is constant('Namespace\\Entity::TYPE_PERSON') %}

constant기능constant테스트에 대한 설명서를 참조하십시오 .


시간을 절약하기 위해. 네임 스페이스에서 클래스 상수에 액세스해야하는 경우

{{ constant('Acme\\DemoBundle\\Entity\\Demo::MY_CONSTANT') }}

1.12.1부터 객체 인스턴스에서도 상수를 읽을 수 있습니다.

{% if var == constant('TYPE_PERSON', entity)

네임 스페이스를 사용하는 경우

{{ constant('Namespace\\Entity::TYPE_COMPANY') }}

중대한! 단일 대신 이중 슬래시를 사용하십시오.


편집 : 더 나은 해결책을 찾았 습니다. 여기에 대해 읽으십시오.



수업이 있다고 가정 해 봅시다.

namespace MyNamespace;
class MyClass
{
    const MY_CONSTANT = 'my_constant';
    const MY_CONSTANT2 = 'const2';
}

나뭇 가지 확장 만들기 및 등록 :

class MyClassExtension extends \Twig_Extension
{
    public function getName()
    { 
        return 'my_class_extension'; 
    }

    public function getGlobals()
    {
        $class = new \ReflectionClass('MyNamespace\MyClass');
        $constants = $class->getConstants();

        return array(
            'MyClass' => $constants
        );
    }
}

이제 다음과 같이 Twig에서 상수를 사용할 수 있습니다.

{{ MyClass.MY_CONSTANT }}

In book best practices of Symfony there is a section with this issue:

Constants can be used for example in your Twig templates thanks to the constant() function:

// src/AppBundle/Entity/Post.php
namespace AppBundle\Entity;

class Post
{
    const NUM_ITEMS = 10;

   // ...
}

And use this constant in template twig:

<p>
    Displaying the {{ constant('NUM_ITEMS', post) }} most recent results.
</p>

Here the link: http://symfony.com/doc/current/best_practices/configuration.html#constants-vs-configuration-options


After some years I realized that my previous answer is not really so good. I have created extension that solves problem better. It's published as open source.

https://github.com/dpolac/twig-const

It defines new Twig operator # which let you access the class constant through any object of that class.

Use it like that:

{% if entity.type == entity#TYPE_PERSON %}

참고URL : https://stackoverflow.com/questions/7611086/how-to-access-class-constants-in-twig

반응형