Я прочитал этот вопрос на SO: «how to disable inArray validator forms in zend framework2» и пытался найти его, но не смог найти способ отсоединить/удалить валидатор . Но InArray
всего лишь a валидатор. Итак, как можно удалить валидатор из списка проверки элемента формы?Как удалить валидатор из элемента Form Element/Form ValidatorChain в Zend Framework 2?
я могу получить валидатор:
$myElement = $form->getInputFilter()->get('city');
$validatorChain = $cityElement->getValidatorChain();
$validators = $validatorChain->getValidators();
и, возможно, могу затем сбросить значение элемента массива с валидатором, я хочу, чтобы удалить, а затем передать результирующий массив обратно в объект ввода и элемент формы , Но это действительно грязно и, конечно, не рекомендуется.
Как удалить валидатор из элемента формы?
Вы попробовали $ inputFilter = new InputFilter(); $ inputFilter-> remove ($ name); И вы используете ** $ factory = new InputFactory(); ** например? –
Спасибо! Да, он работает: '$ formInputFilter = $ form-> getInputFilter(); $ formInputFilter-> remove ('city'); $ formInputFilter-> добавить ((новый Zend \ InputFilter \ Factory()) -> createInput (массив ( \t 'имя' => 'город', \t 'требуется' => правда, ))); 'Но то мне пришлось бы создать «Input» в скрипте вида. Грязные. – automatix
На ваш взгляд, просто сделайте $ newInputFilter = new InputFilter(); // .. ваш материал .. $ inputFilter = new InputFilter(); $ inputFilter-> add ($ newInputFilter, "yourElement"); $ form-> setInputFilter ($ inputFilter); Но это будет лучше в вашем контроллере! –