サブフォームが特定の状況でのみ必要となる Zend_Form があります。親フォームとサブフォームの両方に必須フィールドがあります。サブフォームは常に満たされるとは限りませんが、その要素のいずれかが満たされている場合、それらはすべて満たされるべきです。
<?php
class Cred extends Zend_Form
{
public function init()
{
$title = new Zend_Form_Element_Text('Title');
$title->setLabel('Title')
->setRequired(TRUE);
$this->addElement($title);
$award = new Zend_Form_Element_Text('Awarded');
$award->setLabel('Awarded On')
->setRequired(TRUE)
->addValidator('date');
$this->addElement($award);
$subform = new Zend_Form_SubForm();
$proof = new Zend_Form_Element_File('Documentation');
$proof->setLabel('Documentation')
->setRequired(TRUE)
->addValidator('Size', false, 409600) // limit to 400K
->addValidator('Extension', false, 'pdf');
$subform->addElement($proof);
$lang = new Zend_Form_Element_Select('Language');
$lang->setLabel('Language')->setRequired(TRUE);
$subform->addElement($lang);
$this->addSubForm($subform,'importForm');
$submit = new Zend_Form_Element_Submit('submitForm');
$submit->setLabel('Save');
$this->addElement($submit);
$this->setAction('/cred/save')
->setMethod('post')
->setEnctype(Zend_Form::ENCTYPE_MULTIPART);
}
}
を呼び出すと$form->isValid($_POST)
、親フォームとサブフォームの両方が検証され、サブフォーム自体が不要な場合でもサブフォームの必須要素が空の場合はエラーが返されます。
関数をオーバーロードする以外isValid()
に、親フォームのみを検証する方法はありますか?