Задать вопрос
@mcflys
Grazhdanin planety :)

Как отключить фильтр одного поля формы в Zend Framework 2 в контроллере?

Такая ситуация.

Форму добавления/редактирования юзера я получаю из менеджера сервисов с уже установленным фильтром, в котором есть проверка ввода пароля. Но этот пароль не нужен когда юзера редактируют. Могу ли я как-то налету в контроллере отключить у фильтра формы проверку по полю?

В getServiceConfig модуля:
// ....
'UserCRUDFilter' => function($sm)
{
    return new \Users\Form\UserCRUDFilter();
},

'UserCRUDForm' => function($sm, $param, $param1)
{
    $form = new \Users\Form\UserCRUDForm();
    $form->setInputFilter($sm->get('UserCRUDFilter'));
    return $form;
},
// ....

То есть вначале получаю форму
$form = $this->getServiceLocator()->get('UserCRUDForm');

Потом отключаю необходимость ввода пароля, если юзера редактируют и пароль не введен
if ($user_id > 0 && $this->request->getPost('password') == '') {
      $form->.... // Как-то получаю доступ к классу фильтра и убираю required у проверки пароля
}

И потом уже выполняю
$form->isValid();
  • Вопрос задан
  • 2326 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
@mcflys Автор вопроса
Grazhdanin planety :)
Нашел решение. Пользуйтесь на здоровье :)

// If user is editted - clear password requirement
if ($user_id > 0) {
    $form->getInputFilter()->get('password')->setRequired(false);
    $form->getInputFilter()->get('confirm_password')->setRequired(false);
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы