我正在使用Zend_Form和註冊頁面。我有一個複選框,如果選中,將顯示額外的結算字段。在我的表單實例中,如果複選框被選中,我只希望這些額外的字段是setRequired(true)。有沒有辦法做到這一點?現在的問題是我必須將所有計費字段設置爲setRequired(false),但是如果用戶選中該複選框,邏輯將不關心這些字段是否爲空,因爲它們不是必需的。zend_form只有在複選框被選中時才需要設置字段
1
A
回答
0
好了,這裏是我落得這樣做。我將結算信息創建爲Zend_Form_SubForm並將其添加到主註冊表單中。然後,在我的控制器中,在後期,我檢查是否複選框被選中。如果不是,那麼我從主窗體中刪除子窗體並驗證窗體。如果出現錯誤,我重新添加子表單,以便在重新繪製表單時顯示字段。希望這將有助於某人。
1
我有同樣的問題,我最後寫我自己的驗證:
<?
class Mh_Validator_RequiredIfCheckbox extends Zend_Validate_Abstract
{
const SHOULD_BE_NOT_EMPTY = 'shouldBeNotEmpty';
private $_field;
//protected $_field;
public function __construct($field)
{
$this->_field = $field;
}
protected $_messageTemplates = array(
self::SHOULD_BE_NOT_EMPTY =>"This field is required"
);
/**
* Defined by Zend_Validate_Interface
*
* @param string $value
* @return boolean
*/
public function isValid($value, $context = null)
{
if($context[$this->_field]==0 && $value == null)
{
$this->_error(self::SHOULD_BE_NOT_EMPTY);
return false;
}
return true;
}
}
-1
爲什麼不直接檢查POST是否已發出(如果這是你的窗體的方法),如果是看複選框的值並在驗證$ form-> isValid($ formData)之前將所有元素設置爲false(可能方便將它們保留在數組中)?
實施例:
if ($this->getRequest()->isPost()) {
$formData = $this->getRequest()->getPost();
if ($formData['billing_information_different'] == '1') {
$billingElement1->setRequired(true);
$billingElement2->setRequired(true);
}
}
相關問題
- 1. 設置屬性當該字段的複選框被選中時需要
- 2. 使用引導複選框顯示/隱藏div - 只有在複選框被選中時才需要輸入
- 3. 只有當複選框被選中時,jquery纔會運行
- 4. 只有一個複選框被選中
- 5. 複選框 - 只有在選中時才能運行jquery
- 6. 僅當選中該複選框時才需要輸入h:inputText
- 7. 只有當複選框沒有被選中時纔會調用javascript函數
- 8. 設置當複選框已被選中
- 9. 只有在選擇特定選項時才需要輸入
- 10. 只有當複選框被選中並提交表格時才下載文件
- 11. 僅當選中複選框時才驗證jquery字段
- 12. Angular.js:複選框沒有被用戶選中,但我需要ng-
- 13. 只有在選擇了多個選項中的一個選項時才需要輸入字段
- 14. Angular 2 - 如果選中複選框,則需要字段驗證
- 15. 使複選框只有當另一個複選框被選中時纔會執行某些操作(android)
- 16. 複選框在所有子複選框被選中時被選中,並且在未選中其中一個複選框時被取消選中
- 17. 需要複選框
- 18. 忽略重置字段時選中複選框在PHP形式
- 19. 當複選框被選中時,表單驗證爲空字段
- 20. jQuery的 - 使文本字段時複選框被選中
- 21. MVC驗證複選框 - 當另一個複選框被選中時,將複選框設置爲true
- 22. 爲什麼knockoutJS中的複選框只有在選中時才寫入?
- 23. jQuery。只有當表格框被選中時才顯示div
- 24. 只有使用jquery驗證插件檢查複選框時纔將minLength設置爲字段
- 25. 複選框被選中一次字段被點擊
- 26. 只設置1個在java中選中的複選框
- 27. 僅當選中複選框時,JTable複選框纔會更改
- 28. 隱藏字段設置如果複選框已經被選中並保存在數據庫中,如果沒有選中,則顯示字段設置
- 29. 只有在複選框被選中的情況下插入組
- 30. 當單選按鈕被選中時,複選框變爲必需