2010-09-07 16 views
4

我的下一個單選按鈕組:Zend的形式的無線電默認選中

$enabled = $this->createElement('radio', 'enabled') 
       ->setLabel('Enabled') 
       ->setMultiOptions(array('1'=>'yes', '0'=>'no')) 
       ->setValue($rank_values['enabled']) 
       ->setAttrib('id', 'enabled') 
       ->setAttrib('class', $action . '_enabled') 
       ->setSeparator(''); 

如何設置一個檢查收音機嗎?現在,當我打開我的腳本時,沒有選擇收音機。我想選擇'是'。怎麼樣?

謝謝。

回答

7

它更容易:)

$enabled = $this->createElement('radio', 'enabled') 
       ->setLabel('Enabled') 
       ->setMultiOptions(array('1'=>'yes', '0'=>'no')) 
       ->setValue($rank_values['enabled']) 
       ->setAttrib('id', 'enabled') 
       ->setAttrib('class', $action . '_enabled') 
       ->setSeparator('') 
       ->setValue("1"); 
3

使用此:

->setAttrib("checked","checked") 

讓你完整的代碼如下所示:

$enabled = $this->createElement('radio', 'enabled') 
      ->setLabel('Enabled') 
      ->setMultiOptions(array('0'=>'no', '1'=>'yes')) 
      ->setAttrib("checked","checked") 
      ->setValue($rank_values['enabled']) 
      ->setAttrib('id', 'enabled') 
      ->setAttrib('class', $action . '_enabled') 
      ->setSeparator(''); 

[編輯]使用setValue

您也可以使用此:

->setValue('1') 

這將檢查值1所代表的選項,即yes

+0

是的,它的工作原理,如果我們只有一個元素。我在廣播組中有兩個元素。 – pltvs 2010-09-07 14:38:00

+0

您是否嘗試過我提供的完整代碼? – shamittomar 2010-09-07 14:39:35

+1

是的。它選擇multioptions中的最後一個元素。它選擇'no' – pltvs 2010-09-07 14:41:21

0

是的。我已經使用jQuery解決它:

jQuery(document).ready(function(){ 
    var $radios = $('input:radio[name=enabled]'); 
    if($radios.is(':checked') === false) { 
     $radios.filter('[value=1]').attr('checked', true); 
    } 
}); 
1

我發現,如果你有一個過濾器設置,則->setvalue('X')不起作用。

我刪除->addFilter('StringToLower')
並添加->setSeparator('')->setValue('N');

工作一種享受

7

萬一有人奇觀,我使用數組表示法來聲明我在我的形式和Zend框架2的所有元素有在單選按鈕中選擇一個默認選項,您必須添加屬性值並使其具有您希望默認選擇的value_options的關鍵點:

// Inside your constructor or init method for your form // 
$this->add(
     [ 
      'type'  => 'Radio', 
      'name'  => 'some_radio', 
      'options' => [ 
       'value_options' => [ 
        'opt1' => 'Radio option 1', 
        'opt2' => 'Radio option 2' 
       ] 
      ], 
      'attributes' => [ 
       'value' => 'opt1' // This set the opt 1 as selected when form is rendered 
      ] 
     ] 
    ); 

我發現一些例子有點令人困惑,因爲它們在值選項(0,1)中使用數字鍵,所以當我看到'value'=> 1時,它對於我來說並不明顯,這是value_options數組中的關鍵字。希望這可以幫助某人。

3

根據手冊,你會做這樣,如果你使用數組表示法:link to manual

$this->add(
     [ 
      'name'  => 'someRadioMethod', 
      'type'  => 'radio', 
      'options' => [ 
       'label' => 'Some descriptive label', 
       'value_options' => [ 
        [ 
         'value' => '1', 
         'label' => 'Label for 1', 
         'selected' => true, 

        ], 
        [ 
         'value' => '2', 
         'label' => 'Label for 2', 
         'selected' => false, 

        ] 
       ], 
      ], 
     ] 
    );