Кажется странным фильтровать после проверки, поскольку входные данные до проверки могут быть отредактированы фильтрами. Например, стричь теги или обрезать строку. Если вы используете такой фильтр, как \Zend\I18n\Filter\Alnum()
, вы можете позволить ему удалить пробелы. Поэтому рассматривайте это как плохую практику фильтрации после проверки вашего ввода.
Например, возьмите эти фильтры:
// Default settings, deny whitespace
$filter = new \Zend\I18n\Filter\Alnum();
echo $filter->filter("This is (my) content: 123");
// Returns "Thisismycontent123"
// First param in constructor is $allowWhiteSpace
$filter = new \Zend\I18n\Filter\Alnum(true);
echo $filter->filter("This is (my) content: 123");
// Returns "This is my content 123"
Обратите внимание, что начальное значение отличается от результата. Но вы можете фильтровать после проверки, но я думаю, вам придется это сделать самостоятельно. Таким образом, вы можете добавить метод в свой входной фильтр или форму, которую вы вызываете после проверки. Например:
public function filterPassword() {
$filter = new \Zend\I18n\Filter\Alnum(true);
$inputs = $this->getInputs();
$password = $filter->filter($inputs['password']);
return $password;
}
В вашем контроллере вы можете сделать это, например:
public function ExampleController extends AbstractActionController
{
public function sampleAction() {
$form = new LoginForm();
if($form->isValid()) {
$inputFilter = $form->getInputFilter();
$filterdPassword = $inputFilter->filterPassword();
}
return array('form' => $form);
}
}
person
Kwido
schedule
24.07.2014