【问题标题】:Zend Form Radio Default CheckedZend Form Radio 默认选中
【发布时间】:2011-04-09 05:54:30
【问题描述】:

我有下一个单选按钮组:

$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('');

如何设置选中的收音机?现在,当我打开我的脚本时,没有选择收音机。我想选择“是”。怎么样?

谢谢。

【问题讨论】:

    标签: php zend-framework radio-button zend-form


    【解决方案1】:

    根据手册,如果您要使用数组表示法,您会这样做: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,
    
                        ]
                    ],
                ],
            ]
        );
    

    【讨论】:

      【解决方案2】:

      如果有人想知道,我使用数组表示法在我的表单和 zend 框架 2 中声明我的所有元素,以便在单选按钮中选择默认选项,您必须添加属性值并使其具有你要默认选择的value_options的key:

      // 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】:

        这更容易:)

        $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");
        

        【讨论】:

          【解决方案4】:

          我发现如果您设置了过滤器,那么->setvalue('X') 将不起作用。

          我删除了->addFilter('StringToLower')
          并添加了->setSeparator('')->setValue('N');

          辛苦了

          【讨论】:

            【解决方案5】:

            使用这个:

            ->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

            【讨论】:

            • 是的,如果我们只有一个元素,它就可以工作。我在无线电组中有 2 个元素。
            • 是的。它选择多选项中的最后一个元素。它选择no
            • @Alexander,这就是我在完整代码中替换 yesno 的原因。仔细看。
            • @shamittomar,我认为 setAttrib 被“选中”和“选中”是为所有元素设置该属性,因此最后一个元素通常默认为选中的答案。
            • 因为。这将是工作。但我需要一个yes 第一个值。印度编程......对不起。
            【解决方案6】:

            是的。我已经使用 jQuery 解决了它:

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2022-07-01
              • 1970-01-01
              • 2018-08-07
              • 2016-04-09
              • 2015-09-07
              • 1970-01-01
              • 2011-10-15
              相关资源
              最近更新 更多