3
我正在用Zend Framework創建一個表單來捕獲用戶的人口統計信息。我正在努力驗證兩個文本字段上的數字。爲什麼我的Zend驗證數字未被識別?
我建立我的形式../application/forms/UserDemographics.php這樣的:
class Application_Form_UserDemographics extends Zend_Form
{
public function init()
{
$this->form = new Zend_Form;
$dbAdapter = Zend_Registry::get("db");
...
$this->fax_number = new Zend_Form_Element_Text('fax_number');
$this->fax_number->setLabel('Fax Number')
->addFilter('Int')
->addFilter('StripTags')
->addValidator('Digits');
$this->mobile_number = new Zend_Form_Element_Text('mobile_number');
$this->mobile_number->setLabel('Mobile Number')
->addFilter('Int')
->addFilter('StripTags')
->addValidator('Digits');
...
}
}
我的數據庫是當前配置這樣與問候到fax_number和MOBILE_NUMBER領域,這樣我可以測試是否或者沒有數字被接受或不:
+-----------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+-------------+------+-----+---------+----------------+
...
| fax_number | varchar(32) | NO | | NULL |
| mobile_number | int(15) | YES | | NULL |
...
當我輸入任何東西,但數字在任一在Zend形式的領域之一 - 不顯示錯誤消息,即使我已經加入到雙方的對數字的驗證元素。
文本輸入到移動號碼文本字段由0(零)代替在數據庫中:
mysql> select fax_number, mobile_number from user_demographics;
+--------------------+---------------+
| fax_number | mobile_number |
+--------------------+---------------+
| var char no digits | 0 |
+--------------------+---------------+
在最低限度的MOBILE_NUMBER字段應顯示一條錯誤消息,只有數字可進入文本字段,對不對?
爲什麼看起來數字驗證器不被識別?
這基本上表明數字驗證器幾乎被忽略。當表單呈現時,文本字段中有0(零),但是當我在文本字段中輸入文本時不顯示錯誤消息 - 即使對於在數據庫中設置爲int的移動號碼字段也沒有。
請指教?
HI,非常感謝您發表評論 - 只需要別人看它了。我一直忽略整型過濾器,因爲整個事情變得像一個包處理,並且int過濾器被卡在中間 - 完全忽略它。但是,謝謝!希望你的解釋能幫助別人理解事物的流動:) – marienke
不客氣,恩克。很高興我的回答很有幫助。 –