2012-10-19 147 views
2

我想繞過Zend Framework 2中選擇元素的煩人驗證。我的要求是,我有兩個選擇下拉框,我從左邊傳遞值選擇框到右邊選擇框,最後當我點擊提交按鈕時,我從右邊的選擇框中發佈值。如何刪除Zend框架中選擇元素的驗證2

所以基本上離開選擇框是那裏顯示的值給用戶,我的問題是,因爲沒有價值已選中左邊的選擇框拋出這個錯誤:

["selectAll"] => array(1) { 
     ["isEmpty"] => string(36) "Value is required and can't be empty" 
    } 

我已經看到了一些從#1,其中這是可能的Zend框架1像一個可以禁用驗證的特定選擇element'

例子舊文章: -

$selectAllElement->setRequired(false); 

$selectAllElement->removeDecorator('Errors'); 

其中一些這些方法都不怎麼使用Zend框架2.萬一,如果有人對如何爲特定的選擇元素禁用驗證的解決方案,請分享你的知識,將是hepful爲人進入Zend框架2.

編輯:

在我的形式 -

$select = new Element\Select('selectAllElement'); 
    $select->setAttribute('title', 'Select a Value') 
      ->setAttribute('id', 'id'); 

    $options = array(
     array(
      //Fetching the values from database 
      ), 
    ); 

    $select->setAttribute('multiple', 'multiple') 
     ->setAttribute('required', false) 
     ->setValueOptions($options); 

    $this->add($select); 

根據Sam的要求,我已經提供了代碼,如何將select元素添加到我的表單並設置屬性。

注意:我沒有使用任何字段集

+0

請提供您設置表單驗證的地方的代碼。如果我沒有弄錯,通常在驗證配置中添加''required'=> false'就足夠了。 – Sam

+0

@Sam根據您的要求提供了代碼,請仔細閱讀並告訴我如何解決此問題。謝謝 – user1686230

+1

仍然缺少驗證器。 'setRequired()'僅適用於HTML-Attributed'required =「(bool)」'而不用於需要的驗證。請參閱http://framework.zend.com/manual/2.0/en/modules/zend.form.quick-start.html瞭解有關Zend \表單 – Sam

回答

6

爲了澄清這作爲一個答案,使用setRequired() - 方法上的任何Zend的\表格\元素只聲明瞭,如果HTML屬性required="(bool)"應該呈現或不。

如果你想排除驗證現場/元您選擇多個或複選框不工作時,需要確定這是你的InputFilters設置'required' => false

+2

接受你的答案,你的貢獻表示讚賞 – user1686230

1

有時我裏面,setRequired(假)不工作在視圖中,所以,我只是覆蓋的isValid方法和刪除驗證如上代碼:

public function isValid() { 
    $this->getInputFilter()->remove('alterarsenha'); 
    $this->getInputFilter()->remove('usuario_perfis'); 

    return parent::isValid(); 
} 
0

我知道這個話題很可能是非常過時,但仍也許有認爲這是有益的。

在我使用的ZF2的版本,有在課堂上的Zend \表格\元素\選擇一個bug,這個類提供InputProviderInterface,尤其是法getInputSpecification(),在這個方法中選擇

$spec = array(
    'name' => $this->getName(), 
    'required' => true, 
); 

所以如果你重新定義方法getInputSpecification它應該工作。