Валидаторы аннотаций ZF2 NotEmpty и Int не работают?

Я создаю форму в ZF2 из объекта, и все работает нормально, за исключением того, что 2 моих валидатора по какой-то причине игнорируются. Сущность выглядит так:

  /**
   * @var string $name
   *
   * @ORM\Column(name="name", type="string", length=255, nullable=true)
   * @Annotation\Attributes({"type":"text"})
   * @Annotation\Validator({"name":"NotEmpty"}) // duplicate
   * @Annotation\Options({"label":"Name:"})

   */
  private $name;

  /**
   * @var integer $sort
   *
   * @ORM\Column(name="sort", type="integer")
   * @Annotation\Attributes({"type":"text"})
   * @Annotation\Validator({"name":"Int"}) 
   * @Annotation\Validator({"name":"NotEmpty"})
   * @Annotation\Options({"label":"Sort:"})

   */
  private $sort;  

Тем не менее, я могу отправить форму без каких-либо значений. Я могу ввести строку во ввод SORT, могу оставить оба поля пустыми. Почему это не работает, почему нет сообщения об ошибке, когда я оставляю поля пустыми?


person Chr Testo    schedule 04.07.2014    source источник


Ответы (1)


ладно, это отчасти потому, что я ТУПОЙ.

Проблема 1: notempty не работает, потому что я определил значение nullable как true. Кажется, переопределяет валидатор «notempty». дух.

Проблема 2: я до сих пор не знаю, ПОЧЕМУ это работает, но если я объявлю тип столбца как строку (вместо целого числа), внезапно сработает проверка int.

Итак, вот правильный код:

  /**
   * @var string $name
   *
   * @ORM\Column(name="name", type="string", length=255)
   * @Annotation\Attributes({"type":"text"})
   * @Annotation\Validator({"name":"NotEmpty"}) 
   * @Annotation\Options({"label":"Name:"})

   */
  private $name;

  /** 
   * @var integer $sort
   *
   * @ORM\Column(name="sort", type="string")
   * @Annotation\Attributes({"type":"text"})
   * @Annotation\Validator({"name":"Int"}) 
   * @Annotation\Validator({"name":"NotEmpty"})
   * @Annotation\Options({"label":"Sort:"})

   */
  private $sort;   
person Chr Testo    schedule 07.07.2014