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
'source' 카테고리의 다른 글
선택 쿼리에서 대/소문자 별칭을 사용하는 방법 (0) | 2022.09.12 |
---|---|
MySQL UPDATE(랜덤 번호 1-3) (0) | 2022.09.12 |
optparse가 아닌 argparse를 사용하는 이유는 무엇입니까? (0) | 2022.09.12 |
nuxtjs의 미들웨어 이름 지정 getter 기능에 액세스합니다. (0) | 2022.09.12 |
Python에서 상호 또는 순환(순환) 가져오기를 사용하면 어떻게 됩니까? (0) | 2022.09.12 |