다음 작품으로 간주됩니다 다음 예제에서는 빈 값 'fieldName'
에 대해 유효성 검사가 트리거되지 않습니다.
$input = new \Zend\InputFilter\Input('fieldName');
$input
->setAllowEmpty(true)
->setRequired(false)
->getValidatorChain()
->attach(new \Zend\Validator\Callback(function ($value) {
echo 'called validator!';
return true; // valid
}));
$inputFilter = new \Zend\InputFilter\InputFilter();
$inputFilter->add($input);
$inputFilter->setData(array('fieldName' => 'value'));
var_dump($inputFilter->isValid()); // true, echoes 'called validator!'
$inputFilter->setData(array('fieldName' => ''));
var_dump($inputFilter->isValid()); // true, no output
$inputFilter->setData(array());
var_dump($inputFilter->isValid()); // true, no output
에 이것은 당신의 CMS의 페이지에 할당 된 URL을 확인하고 충돌을 피하는 같은 당신은 특별한 경우가있을 때 매우 성가신하지만 이것은 매우 성가신 일 수있다 (빈 URL 여전히 URL입니다!) .
기본적으로 NotEmpty
유효성 검사기를 직접 연결하고 setRequired
및 setAllowEmpty
으로 전화하지 않으려면이 문자열을 처리하는 방법이 있습니다. 이것은 기본적으로 utomatically 자체에 NotEmpty
검증을 첨부하지 Zend\InputFilter\Input#injectNotEmptyValidator
을 말할 것이다 :
$input = new \Zend\InputFilter\Input('fieldName');
$input
->getValidatorChain()
->attach(new \Zend\Validator\NotEmpty(\Zend\Validator\NotEmpty::NULL))
->attach(new \Zend\Validator\Callback(function ($value) {
echo 'called validator!';
return true; // valid
}));
$inputFilter = new \Zend\InputFilter\InputFilter();
$inputFilter->add($input);
$inputFilter->setData(array('fieldName' => 'value'));
var_dump($inputFilter->isValid()); // true, echoes 'called validator!'
$inputFilter->setData(array('fieldName' => ''));
var_dump($inputFilter->isValid()); // true, echoes 'called validator!'
$inputFilter->setData(array());
var_dump($inputFilter->isValid()); // false (null was passed to the validator)
당신은 또한 null
에 대해 확인하고 싶다면, 당신은 다음과 같은 Zend\InputFilter\Input
을 확장해야합니다 : 당신이 만약
class MyInput extends \Zend\InputFilter\Input
{
// disabling auto-injection of the `NotEmpty` validator
protected function injectNotEmptyValidator() {}
}
http://akrabat.com/zend-framework-2/setting-up-required-fields-that-can-be-empty-with-zendinputfilter/ – Sam
allow_empty = true 및 my 요소 값이 비어있는 경우, zf2는 해당 요소가 유효하고 유효성 검사기를 호출하지 않는 것으로 간주합니다. – deyine
나는 당신의 문제를 이해하지 못한다고 생각합니다. 빈 값을 허용하거나 사용하지 마십시오. 빈 값을 허용하지 않으면 모든 유효성 검사기가 실행되고 그렇지 않으면 빈 입력이 제공되면 유효성 검사가 실패합니다. 허용하면 공백 값을 더 이상 검증 할 필요가 없습니다. o – Sam