そこで、入力フィルターを作成しました(以下を参照)が、24個のフィールドをテストして、すべてが有効であることを確認する必要があります(これを簡単にするために、以下にリストされているのは1つだけです)。この場合、入力はユーザーではなく電子メールサーバーからのものであるため、入力を受け入れてエラーを返送しないようにする必要があります。ただし、データをチェックして、すべてを台無しにしようとしているヘッダー/フィールドをだれも台無しにしていないことを確認する必要があります。
だから私の質問は、各入力のデフォルト値をどのように送信できますか?たとえば、メールボックスの長さが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";
}