Zend_Form:向单选按钮添加元素

时间:2010-08-01 20:18:38

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

我正在尝试按照表单中的单选按钮添加Zend_Form_Elements,但到目前为止我一直无法这样做。如果有人能指出我正确的方向,将不胜感激。表单需要呈现如下所示:

(*) [____]%

( ) [____]€

( ) [___] for [___]

3 个答案:

答案 0 :(得分:0)

使用表单decorators和css根据需要设置输入样式。

您可以使用forn装饰器来重写表单的标记。但是它非常挑战,也许你最好的选择是表单viewScript。这很容易实现,让您100%控制表单的html。看看

示例:使用ViewScript装饰器完全自定义

在我链接的示例中。

答案 1 :(得分:0)

这样的事情怎么样:

class My_RadioForm extends Zend_Form
{
    public function init()
    {
        $this->addElement('radio', 'myradio', array(
            'label' => 'Select an option below',
            'multiOptions' => array(
                'val1'  => 'Text 1',
                'val2'  => 'Text 2',
                'val3'  => 'Text 2',
            ),
        ));
    }

}

对于非常具体的渲染,@ izogood是对的:必须进入装饰师的所有业务。

答案 2 :(得分:0)

如果只是定位输入标签,您可以使用docorators。您可以通过覆盖/修改默认的FormElements装饰器来实现,例如,通过将float:left style属性添加到特定的form元素。继续David的例子:

 $this->addElement('radio', 'myradio', array(
        'label' => 'Select an option below',
        'multiOptions' => array(
            'val1'  => 'Text 1',
            'val2'  => 'Text 2',
            'val3'  => 'Text 2',
        ), 
        'decorators' =>
          array(
          'ViewHelper',
          'Errors',
          'Description',
          array('HtmlTag', array('tag' => 'dd', 'style' => 'float: left')),
          'Label'
        )
));

还有一个setDefaultDecorators()方法,它允许您覆盖整个表单中的所有元素装饰器。

如果要创建复合元素的更高级解决方案 - http://weierophinney.net/matthew/archives/217-Creating-composite-elements.html - 即包含多个输入标记的自定义表单元素。您可以通过这种方式更好地控制表单业务逻辑。