'required'값이 'false'로 설정된 InputFilter가있는 Form \ Element가 있습니다. 특정 상황에서 Element는 Controller 내에서 'required'값을 'true'로 설정해야합니다.Zend Framework 2 설정 Zend InputFilter setRequired()
내 컨트롤러에서 Zend \ InputFilter setRequired (true)를 설정하면 $ form-> isValid() 메서드가 호출 될 때 존중되지 않는 것 같습니다. 그러나 Zend \ InputFilter (컨트롤러 내부에 동적으로 설정되지 않음)에서 'required'가 "true"인 필터가 설정된 경우 예상대로 작동합니다. 그러나이 형식을 사용하고 여러 가지 필터를 사용하면 원하는 솔루션이 아닙니다. 위치 및 때로는 필드가 필요하고 그렇지 않은 경우가 있습니다. 내 컨트롤러에서
, 나는 다음과 같은 한 :
$form = new UserDataForm();
$request = $this->getRequest();
if ($request->isPost()) {
$update = new UserFilter();
// The following doesn't seem to be respected
$update->getInputFilter()->get('userName')->setRequired(true);
$form->setInputFilter($update->getInputFilter());
$form->setData($request->getPost());
if($form->isValid()) {
//The result is true even when the 'userName' var is not set in the POST data.
echo("Is Valid");
} else {
echo($form->getMessages());
}
내가 지금처럼 내 UserDataForm() 클래스를 설정 :
: 내가 지금처럼 내 UserFilter 클래스를 설정 한class UserDataForm extends Form
{
public function __construct($name = null, array $userTypes) {
parent::__construct('user');
$this->setAttribute('method','post');
$this->add(array(
'name' => 'userName',
'attributes' => array(
'type' => 'text',
'class'=> 'small'
),
'options' => array(
'label' => 'Username:'
)
));
//... and so on...
public function getInputFilter() {
if (!$this->inputFilter) {
$inputFilter = new InputFilter();
$factory = new InputFactory();
$inputFilter->add($factory->createInput(array(
'name' => 'userName',
'required' => false,
'filters' => array(
array('name' => 'StripTags'),
array('name' => 'StringTrim'),
),
'validators' => array(
array(
'name' => 'StringLength',
'options' => array(
'encoding' => 'UTF-8',
)
),
)
)));
// ...
누군가 내 Controll에서 호출 한 것과 같이 $ update-> getInputFilter() -> get ('userName') -> setRequired (true) 어쩌면 폼이 검증 될 때 존중받지 못하는 것 같습니까?