Итак, я создал фильтр ввода (см. Ниже), но мне нужно протестировать 24 поля, чтобы убедиться, что все они действительны (только одно перечисленное ниже, чтобы это было просто). В этом случае вход поступает с сервера электронной почты, а не с пользователя, поэтому мне нужно принять ввод и не отправлять ошибку. Тем не менее, мне все еще нужно проверить данные, чтобы никто не возился с заголовками/полями, пытаясь все испортить.Zend Framework 2 Установить значение по умолчанию, если неверный ввод
Так что мой вопрос: как я могу отправить значение по умолчанию для каждого входа? Например, удар, если почтовый ящик длина 0, что-то не так, поэтому я просто хочу, чтобы установить значение, чтобы быть что-то вроде «InvalidMailbox», так что я могу по-прежнему хранить это в базе данных,
public function getInputFilter()
{
if (!$this->inputFilter) {
$inputFilter = new InputFilter();
$factory = new InputFactory();
$inputFilter->add($factory->createInput(array(
'name' => 'mailbox',
'required' => true,
'filters' => array(
array('name' => 'StripTags'),
array('name' => 'StripNewLines'),
array('name' => 'StringToLower'),
array('name' => 'StringTrim'),
),
'validators' => array(
array(
'name' => 'StringLength',
'options' => array(
'encoding' => 'UTF-8',
'min' => 1,
'max' => 200,
),
),
),
)));
$this->inputFilter = $inputFilter;
}
return $this->inputFilter;
}
Назвав его. ..
$mail = new SMail();
$inputFilter = $mail->getInputFilter;
$inputFilter->setData($data);
if ($inputFilter->isValid()) {
//echo "The form is valid\n";
} else {
// Maybe set the default here?
// but with 24 different fields, how can I know which one caused the error?
//echo "The form is not valid\n";
}
Зачем хранить недопустимые данные? Для меня это не имеет смысла. Если вам нужны значения по умолчанию, заполните форму данными по умолчанию при рендеринге формы, а не после ее проверки. – Sam
@ Сэм, как я уже сказал, нет формы. Это «stdin» (электронная почта приходит на сервер, сервер отправляет электронное письмо на этот скрипт). Вот почему я не могу просто ошибиться и вернуться ... Мне нужно очистить любые плохие данные, а затем сохранить их в базе данных. Как только электронная почта попадет в скрипт, если я не могу его проверить, это просто потеряйте навсегда. – Josh