2014-03-07 44 views
1

我有一個<select multiple>在啓動時填入了一些值,但通過Javascript添加了其他選項。不過,現在我想驗證這個元素,至少已經選擇了其中一個選項。需要的動態Zend_Form_Element_Multiselect

我使用Zend_Form_Element_Multiselect進行驗證:

$tags = new Zend_Form_Element_Multiselect('cms_tags'); 
$tags->setRegisterInArrayValidator(false)->setRequired(true); 

但是,當然,這是行不通的。我該如何做一些簡單的事情,比如檢查cms_tags陣列的空虛而不訴諸過載isValid函數?

PS。 Validate_Not_Empty不能正常工作。

+0

'如果(isset($ _ POST [ 'cms_tags'])&& is_array($ _ POST [ 'cms_tags'])&&的sizeof($ _ POST [ 'cms_tags']) > 0)' – DanFromGermany

+0

我知道如何在純PHP中做到這一點 - 問題是設置驗證器,它會爲我做。 – eithed

回答

0

幸運的是,我的問題的解決方案是我的代碼。不幸的是,至少在我看來,Zend存在一個bug - 我的數據的問題是值數組末尾出現的空值,所以cms_tags[]=5,cms_tags[]=被認爲對這種驗證器無效。如果這是一個有效的行爲,我將把它留給Zend人,但這至少可以回答我的問題。

0

嘗試是這樣的:

public function isValid($data) { 

    $etat_valid = parent::isValid($data); 
    if(isset($data['cms_tags'])){ 
     // Add your validators 
     // for example: 
     if("" == $data['cms_tags']){ 
      $this->getElement('cms_tags')->addErrors(array('This value is required and can not be empty')); 
      $etat_valid = false; 
     } 
    } 
    return $etat_valid; 
} 
+0

謝謝,但:a)'不訴諸重載isValid函數',並且b)已經解決了這個問題 – eithed

+0

@eithedog:是的,我看到了,但是當我在驗證過程中鍵入我的答案,並且我沒有想到話題,我對那些有興趣的人給出了這個答案。 但是,如果你不喜歡它,我可以刪除它。 :) – doydoy44