엔티티 클래스에는 몇 가지 클래스 상수가 있습니다.
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)
답변
편집 : 더 나은 해결책을 찾았 습니다. 여기에 대해 읽으십시오.
수업이 있다고 가정 해 봅시다.
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 }}
답변
네임 스페이스를 사용하는 경우
{{ constant('Namespace\\Entity::TYPE_COMPANY') }}
중대한! 단일 대신 이중 슬래시를 사용하십시오.
답변
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 %}