Назначьте валидатор форме в контроллере с помощью Zend Framework 2.

У меня есть вопрос о Zend Framework 2, может ли кто-нибудь предоставить пример кода или ссылку на то, как я могу прикрепить класс валидатора к форме в моем контроллере, чтобы он отображал сообщения об ошибках от валидатора. Разработчик Zend framework предложил мне использовать это

$form->getInputFilter()->get('entityName')->getValidatorChain()->add($validator);

когда я добавил эту строку в свой контроллер, выдает мне эту ошибку, когда я пытаюсь добавить новый объект

Fatal error: Call to undefined method Zend\Validator\ValidatorChain::add() in C:\Album\src\Album\Controller\AlbumController.php

В случае, если кто-то, знакомый с Zend Framework, может помочь мне разобраться с этим. Я просто ищу способы добавить валидатор в мою форму в контроллере. Мы ценим любые предложения.

P.S. Мой код AlbumController можно найти здесь


person 125369    schedule 11.09.2012    source источник


Ответы (2)


Извините, на самом деле это addValidator($validator), а не просто add($validator).

Но вы могли бы это увидеть, если бы взглянули на исходники.

Кроме того, я не думаю, что для этого нужно было создавать новый вопрос. Я бы ответил на это также в вашем последнем вопросе.

// Редактировать: ой, только что увидел, что вы задали свой последний вопрос, извините за это.

person Daniel M    schedule 11.09.2012
comment
Привет, Даниил, я ждал от тебя ответа в предыдущем посте, но я подумал, что это привлечет твое внимание здесь :) - person 125369; 11.09.2012

Самый простой ответ на этот вопрос, который не требует какой-либо справочной документации, — это понять, что говорит вам сообщение об ошибке. В этом случае метод add() не существует в классе ValidatorChain. Итак, откройте этот класс в своем редакторе. Если вы используете метод с хорошим самоанализом кода, вы можете перейти к любому общедоступному методу, ввести $this-> и нажать ярлык автозаполнения (обычно ctrl + пробел). Это должно дать вам каталог доступных вам методов. Просмотрите методы, которые начинаются с разумного имени того, что вы пытаетесь сделать, например add*, и вы наткнетесь на ответ: addValidator()

Я хотел оставить это как комментарий, но я начал немного болтать.

person Mike B    schedule 11.09.2012
comment
Привет, Майк, пожалуйста, не будь слишком строг со мной, я привыкаю к ​​этим вещам. В любом случае спасибо, что указали на это. - person 125369; 11.09.2012
comment
@webMot Я не собирался показаться резким. Я очень часто использую этот метод при работе с любой кодовой базой, в которой много ООП (читай: zF). Использование вашей IDE описанными выше способами очень поможет вам в ваших путешествиях. Другой пример: вы хотите добавить валидатор к элементу формы, но точно не знаете, какой фильтр использовать. Используя ваш редактор, вы можете просто ввести new Zend_Filter<Ctrl+Space>, и вы получите список всех zend-фильтров. - person Mike B; 11.09.2012
comment
спасибо, что указали на это, хорошие предложения для начинающих, таких как я - person 125369; 11.09.2012
comment
(Примечание: в ZF2 классы разделены пространствами имен, поэтому вам нужно ввести \Zend\Filter\‹Ctrl Space›, чтобы увидеть доступные подпространства имен и классы) - person Daniel M; 11.09.2012