我試圖用「相同」的驗證,驗證兩個密碼是否在我的登記表相同,但它一直試圖驗證與實際的話,我該令牌進入,而不是表單元素,我想驗證。代碼如下所示:(這是我的表單模型構造..)在窗體使用Zend_Validate_Identical驗證
$password = new Zend_Form_Element_Password('password');
$password->addValidator('Regex',false,array('pattern' => '/^.*(?=.{6,20})(?=.*[\d])(?=.*[a-zA-Z])/'))
->addValidator('StringLength',false,array('max'=>20))
->setRequired(true);
$password2 = new Zend_Form_Element_Password('password2');
$password2->setRequired(true);
$password2->addValidator('Identical',false,array('token'=>'password'));
$register = new Zend_Form_Element_Submit('register');
$this->setDecorators(array(
array('ViewScript',
array('viewScript' => '_form_registration.phtml'))
)
);
$this->addElements(array($firstName,$lastName,$email,$city,$password,$password2,$register));
而不是驗證對所謂的「密碼」的形式元素,它不停地嘗試去匹配實際字符串「密碼」
的我的工作是在數據發佈到控制器之後創建一個驗證器,並根據發佈數據進行驗證,但是如果有更多的模塊化方法可以做到這一點(也就是在表單構造器中留下邏輯),我會愛知道。
謝謝您提前
檢查:http://stackoverflow.com/questions/347856/zend-form-how-to-check-2-fields-are-identical – Marcin 2011-05-15 23:28:27
這個例子沒有按不爲我工作。我試圖將驗證器放置在表單模型中,但它一直試圖與「實際字符串」比較,而不是鏈接的標記進行比較。我可能做錯了什麼? – 2011-05-17 03:27:44
iirc唯一可以通過這個方法的方法是在檢查isPost()是否爲真後,在控制器中創建驗證器。用這種方法你可以將令牌設置爲第一個密碼的值 – Ascherer 2011-05-19 14:24:49