選択/ドロップダウンで構成されるフォームがあります。デフォルト値を-1に設定しました。フォームを送信するときに、送信された値がデフォルト値と等しくないことを検証したいと思います。私は試しsetRequired(true)
ましたが、私が知る限り、notEmpty
それはバリデーターを追加するための便利な方法であり、実際には私が望んでいるものではありません。
これが私のフォームの一部です:
$select = new Zend_Form_Element_Select('myselect');
$select->setMultiOptions(array(
'-1' => 'Gender',
'0' => 'Female',
'1' => 'Male'
))
->addValidator(new Zend_Validate_Int(), false);
$this->setDefaults(array('myselect' => -1));
そして、これが私のコントローラーです:
if ($this->getRequest()->isPost()) {
$form = new My_Form_Contact();
if ($form->isValidPartial(array('myselect' => $this->getRequest()->getPost('myselect')))) {
// "myselect" is valid
}
isValidPartial
デフォルト値とは異なる値を持つ要素に応じて異なるロジックを使用する必要があるため、このメソッドを使用する必要があります。必要なのはnotEqualバリデーターだと思いますが、見つかりませんでした。自分でバリデーターを作ることは可能だと思いますが、まずはもっと簡単な方法があるかどうか聞いてみたいと思いました。も見ましたZend_Validate_Identical
が、今回は活用できないと思います。
要約すると、送信された値がデフォルト値と等しくない場合にのみ、選択が正常に検証されるようにします。