source

Twig에서 클래스 상수에 액세스하는 방법

gigabyte 2022. 9. 12. 11:41
반응형

Twig에서 클래스 상수에 액세스하는 방법

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

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

보통 PHP에서는 자주 합니다.if($var == Entity::TYPE_PERSON)트위그에서 이런 걸 해보고 싶어요가능합니까?

시간을 아끼려고.네임스페이스에서 클래스 상수에 액세스해야 하는 경우

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

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

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';
}

Twig 확장자를 만들고 등록합니다.

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 }}

Symfony의 베스트 프랙티스에 이 문제가 있는 섹션이 있습니다.

예를 들어 constant() 함수를 사용하여 Twig 템플릿에서 상수를 사용할 수 있습니다.

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

class Post
{
    const NUM_ITEMS = 10;

   // ...
}

템플릿 트윅에서는 다음 상수를 사용합니다.

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

링크: http://symfony.com/doc/current/best_practices/configuration.html#constants-vs-configuration-options

몇 년 후, 나는 이전의 대답이 그다지 좋지 않다는 것을 깨달았다.저는 문제를 더 잘 해결할 수 있는 확장을 만들었습니다.오픈 소스로 출판되어 있습니다.

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

새로운 Twig 연산자를 정의합니다.#클래스 상수에 액세스하려면 해당 클래스의 모든 개체를 통해 클래스 상수에 액세스 할 수 있습니다.

다음과 같이 사용합니다.

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

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

반응형