Zend Framework:向字段集添加单选按钮

时间:2014-03-18 10:02:35

标签: jquery-mobile zend-framework radio-button zend-form fieldset

Moin Moin和你好,

我对Zend Framework很新,所以我希望我的问题对你来说不是什么大问题。

我正在使用Zend Framework 1.12.5和jQuery Mobile 1.4.0。
我想要做的是在我的注册表单中添加两个水平单选按钮。在阅读jQuery文档后,我发现你需要将radiobuttons添加到属性为'data-type =“horizo​​ntal”'的fieldset中。但我不知道如何在框架中做到这一点。

至少我想要这样的东西:

<fieldset data-role="controlgroup" data-type="horizontal">
        <legend>Gender</legend>
        <input name="radio-choice-h-2" id="radio-choice-h-2a" value="on" checked="checked" type="radio">
        <label for="radio-choice-h-2a">male</label>
        <input name="radio-choice-h-2" id="radio-choice-h-2b" value="off" type="radio">
        <label for="radio-choice-h-2b">female</label>
</fieldset>

以下是我的Zend表格的代码:

   $this->addElement('radio', 'gender', array(
        'label'=>'Gender',
        'value'    => '0',
        'multiOptions'=>array(
            '0' => 'male',
            '1' => 'female',
        ),
        'separator' => ' ',
        'decorators' => array(
            'ViewHelper',
        )
    ));

我试图为fieldset创建一个自己的formelement并在其中包含radiobuttons,但是fieldset在同一时刻被创建和关闭。 (如果你愿意,我也可以发布源代码。) 所以我的HTML看起来像这样:

<form id="register" enctype="application/x-www-form-urlencoded" method="post" autocomplete="off" action=""><div class="form">
<fieldset data-role="controlgroup" data-type="horizontal"></fieldset>
<dt id="gender-label"><label class="optional">Gender</label></dt>

<label><input type="radio" name="gender" ...

如您所见:它不起作用。

有没有人曾经遇到过这个问题并且可以让我朝着正确的方向努力?

感谢您的帮助 Bazti

2 个答案:

答案 0 :(得分:1)

不幸的是,前置/附加装饰器并没有解决我的问题(或者我对使用功能方式创建它的经验太少了)但我找到了另一个解决方案:

$this->addElement('radio', 'gender', array(
    'label'=>'Gender',
    'value'    => '0',
    'multiOptions'=>array(
        '0' => 'female',
        '1' => 'male',
    ),
    'separator' => ' ',
    'decorators' => array(
        'ViewHelper', array(
            array('fieldset' => 'HtmlTag'),
            array('tag' => 'fieldset',
                  'data-role' => 'controlgroup',
                  'data-type' => 'horizontal')
        )
    )
));

感谢您的帮助,它为我提供了解决此问题的正确方向。 =)

答案 1 :(得分:0)

就个人而言,我会添加一个prepend和一个追加自定义装饰器。

这是允许我了解这种技术的website (wiip.fr)(法语但示例很清楚),否则,我发现it。肯定还有其他:)

我希望这个对你有用。 :)