2015-12-27 5 views
2

Обычно я использую Constants во всех местах на основе аннотаций, например. annotations, route and assert annotations, но в Assert \ Expression он выбрасывает Variable "EntityInterface" is not valid around position 26. Это ошибка или это особый редкий случай?Symfony2 Assert Expression аннотация не поддерживает константы

<?php 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="id_number", type="string", length=11, nullable=true) 
    * @Assert\Expression(
    *  "this.getNationality() == EntityInterface::COUNTRY_DEFAULT_VALUE and value != null", 
    *  message = "form.user.validation.id_number.blank", 
    *  groups = {"personal_info"} 
    *) 
    * @Assert\Regex(
    *  pattern="/^([\d]{11})$/", 
    *  match=true, 
    *  message="form.user.validation.id_number.regex", 
    *  groups = {"personal_info"} 
    *) 
    */ 
    private $idNumber; 

ответ

1

Попробуйте использовать

/** 
* @ORM\Column(name="id_number", type="string", length=11, nullable=true) 
* @Assert\Expression(
*  "this.getNationality() == constant('EntityInterface::COUNTRY_DEFAULT_VALUE') and value != null", 
*  message = "form.user.validation.id_number.blank", 
*  groups = {"personal_info"} 
*) 
*/ 

вместо (опущенные части вашего примера, чтобы сосредоточиться на использовании constant() здесь).

Для справки см

+0

Это не работает, сообщает 'Предупреждение: постоянная(): Не удалось найти постоянную EntityInterface :: COUNTRY_DEFAULT_VALUE' I проверенная константа есть. – FZE

+1

OK Я нахожу проблему таким образом, что ей требуется пространство имен. FrontendBundle \\ EntityInterface :: COUNTRY_DEFAULT_VALUE теперь все в порядке. – FZE

+0

Действительно, @FZE похоже, что константа function() не может читать из операторов использования и требует экранирования: @Assert \ Expression ("! (This.foo == constant ('App \\ Domain \\ Bundle \\ Foo \\ Foo :: бар) ") В отличие от других ограничений, как диапазон, например: использование AppDomain \ Model \ Foo \ Foo; @Assert \ Range (мин = Foo :: MIN_NUMBER) – webDEVILopers

Смежные вопросы