所以我創建了一個輸入過濾器(見下面),但我必須測試24個字段以確保它們都是有效的(下面只列出1個以保持這一點)。在這種情況下,輸入來自電子郵件服務器,而不是用戶,所以我需要接受輸入,而不是發回錯誤。但是,我仍然需要檢查數據,以確保沒有人搞亂標題/字段,試圖搞砸一切。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 2013-02-08 16:56:33
@Sam就像我說的,沒有任何形式。這是'stdin'(電子郵件來到服務器,服務器管道電子郵件到這個腳本)。這就是爲什麼我不能只是錯誤和返回...我需要清理任何不良數據,然後將其存儲在數據庫中..一旦電子郵件碰到腳本,如果我不能驗證它,它會只是永遠失去。 – Josh 2013-02-08 17:07:52