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;
Это не работает, сообщает 'Предупреждение: постоянная(): Не удалось найти постоянную EntityInterface :: COUNTRY_DEFAULT_VALUE' I проверенная константа есть. – FZE
OK Я нахожу проблему таким образом, что ей требуется пространство имен. FrontendBundle \\ EntityInterface :: COUNTRY_DEFAULT_VALUE теперь все в порядке. – FZE
Действительно, @FZE похоже, что константа function() не может читать из операторов использования и требует экранирования: @Assert \ Expression ("! (This.foo == constant ('App \\ Domain \\ Bundle \\ Foo \\ Foo :: бар) ") В отличие от других ограничений, как диапазон, например: использование AppDomain \ Model \ Foo \ Foo; @Assert \ Range (мин = Foo :: MIN_NUMBER) – webDEVILopers