Zend Frameworkを使用してフォームを作成し、ユーザーの人口統計をキャプチャしています。2つのテキストフィールドの数字の検証に苦労しています。
次のように../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フィールドには、テキストフィールドに入力できるのは数字のみであるというエラーメッセージが表示されるはずです。
そして、なぜDigitsバリデーターが認識されていないように見えるのですか?
これは基本的に、Digitsバリデーターがほとんど無視されていることを示しています。フォームがレンダリングされるとき、テキストフィールドには0(ゼロ)が含まれますが、テキストフィールドにテキストを入力してもエラーメッセージは表示されません。データベースでintに設定されているmobile_numberフィールドでも同様です。
お知らせ下さい?