2014-02-20 52 views
0

我使用Zend Framework 1.12,使用一些選擇選項來操縱窗體。問題是我被要求刪除窗體開頭顯示的默認選項,以便選擇菜單在開始時是空的,但是它只能用三個值填充。我的代碼如下:從zend窗體中刪除默認選項

$tipo = new Zend_Form_Element_Select ('tipo', array (
      'onchange' => 'checkServer(this.value);' 
        )); 
    $tipo->setLabel ('Kerio Product')->setRequired()->addMultiOptions (array (
      '1' => 'Connect', 
      '2' => 'Control', 
      '3' => 'Operator' 
    )); 

$this->addElement($tipo) 

$ this_setValue(「」);不起作用

回答

1

嘗試此代碼(您需要在您的類中擴展Zend_Form)。

$this->addElement('select', 'KerioProduct', array(

     'multiOptions' => array('' => "") + Zend_Registry::get('config')->lists->yourProducts->toArray()/* if you store your options in a file: 'connect, control... in your case: OR create an array 1=>connect , 2=>control... */, 

     'required' => true, 
     'validators' => array (
          'NotEmpty' => array (
           'validator' => 'NotEmpty', 
           'options' => array (
            'messages' => $tr->_('select a product ') 
           ) 
          ) 
         ) 
    )); 

希望它有幫助。

+0

是什麼$ TR代表什麼? – softwareplay

+1

用於後來翻譯,你從代碼的消息=>「...」 – mboullouz

1

你可以在像這樣設置空或 「」 作爲第一個選項:

- > addMultiOptions(陣列( '0'=> '', '1'=> '連接' ....

+0

那會雖然確認刪除.... – softwareplay

+0

應該驗證或不?這取決於是否應該要求這個字段。 – konradwww

+0

沒有它不應該驗證,則需要該領域,但它shoudl是emty當窗體首先顯示出來..我在尋找一個驗證,但不知何故亂 – softwareplay

1

,如果你想選擇的菜單是空的,你需要設置的Zend的形式虛假寄存器組驗證;而選擇元素將是空的,可以在沒有驗證錯誤去

你。可以這樣做:

$tipo = new Zend_Form_Element_Select ('tipo', array (
       'onchange' => 'checkServer(this.value);' 
       ) 
       ); 
$tipo->setLabel ('Kerio Product') 
    ->setRequired() // You don't need this in this case 
    ->setRegisterInArrayValidator(false); 

這將您選擇的元素與空出越來越陣列驗證錯誤。如何添加選擇選項,取決於您可以在控制器上或視圖中執行。

->addMultiOptions (array (
      '1' => 'Connect', 
      '2' => 'Control', 
      '3' => 'Operator' 
    )) 

我希望增加一些您的問題