我在表單中有2個文本字段。Zend_Form - 提交表單後如何添加Validator
- TextFieldA - 不需要
- TextFieldB - 不需要
用戶提交表單, 如何識別/ setRequired(真)添加到TextFieldB如果TextFielA的值不爲空後?
我在表單中有2個文本字段。Zend_Form - 提交表單後如何添加Validator
用戶提交表單, 如何識別/ setRequired(真)添加到TextFieldB如果TextFielA的值不爲空後?
除了@ Marcin的想法之外,我看到了兩種方法。
有條件通過創建窗體上的preValidate()
方法,把它在你的控制器呼籲相關元素setRequired()
。 [真的一樣想法@Marcin,但向下推入形式本身,保持控制器有點精簡]
創建一個名爲像ConditionallyRequired
自定義驗證接受作爲一個選項「其他字段的字段名」。然後將此驗證程序附加到每個元素,並使用「other」元素的名稱進行配置。然後在驗證程序的isValid($value, $context)
方法中,如果$context['otherfield']
非空,則有條件地測試$value
。
你可以做如下:
if ($this->getRequest()->isPost()) {
$textFieldA = $yourForm->getElement('TextFieldA');
$textFieldB = $yourForm->getElement('TextFieldB');
if (!empty($_POST['TextFieldA'])) {
$textFieldB->setRequired(true);
}
if (!empty($_POST['TextFieldB'])) {
$textFieldA->setRequired(true);
}
if ($mainForm->isValid($_POST)) {
// process the form
}
}
基本上,你的帖子後添加驗證,但形式驗證之前。 希望這有助於。