私はhtmlフォームを構築しようとしています(zendにデコレータで生成させるのは現実的ではないほど十分なマークアップが必要です)、$this->signupForm->getValue('fieldName')
入力値要素で使用しています。
フォーム クラスは通常どおり要素を作成し、フォームに追加します。このフォームを表示していたとき、フィールドは適切に機能していました。
しかし、getValue メソッドを使用すると、フォーム フィールドの値の半分が「0」になります。null でないことを確認するために型チェックを行いましたが、getValue は実際には "0" の文字列を返しています。
設定されているデフォルトはありません。関連しているように見える唯一のことは、デフォルト値が「0」であるすべてのフィールドが、親クラスを拡張するサブクラスで定義されていることです。ただし、フィールドを親クラスに移動しても影響はないようです (キャッシュがクリアされるなど)。
これらは、フォーム クラスがどのように構成されているかを示しています。
class Form_Signup extends Base_Form_Signup {
public function __construct($options = null) {
parent::__construct($options);
$address = $this->createElement('checkbox', 'address');
$address->setLabel('Address')->setRequired(true);
// Add our elements
$this->addElement($address);
}
}
class Base_Form_Signup extends Zend_Form {
public function __construct($options = null) {
parent::__construct($options);
// fields defined here do not show 0
// Add our elements
$this->addElement( // adding our elements );
}
}