Zend 表单渲染和装饰器(与引导程序正确使用)



引导示例代码

http://getbootstrap.com/css/#forms

getbootstrap.com 复制一个简单的电子邮件输入元素建议我们按以下方式格式化 HTML:

<div class="form-group">
    <label for="exampleInputEmail1">Email address</label>
    <input id="exampleInputEmail1" class="form-control" type="email" placeholder="Email">
</div>

上面我们有一个<标签>标签,在文本内容"电子邮件地址"之后直接关闭。

我现在想使用 Zend Framework 创建相同的表单组。


module/MyApp/src/MyModule/Form/MyForm.php

namespace MyModuleForm;
use ZendFormForm;
class MyModuleForm extends Form {
 public function __construct($name = null)
 {
     $this->add(array(
         'name' => 'email_address',
         'type' => 'Email',             
         'options' => array(
             'label' => 'Email address',
         ),
         'attributes' => array(
            'class'  => 'form-control',
            'placeholder' => 'Email'
         )                
     ));

Zend 框架生成的代码

<div class="form-group">
    <label>
        <span>Email address</span>
        <input class="form-control" type="email" placeholder="Email" id="exampleInputEmail1">
    </label>
</div>

在上面的HTML中,你可以看到Zend没有关闭<标签>标签。相反,<标签>封装了它的子项。

如何更改 Zend 渲染的工作方式?

我假设您正在使用 ZF2 FormRow 视图助手在视图脚本中呈现表单元素,例如 $this->formRow($this->form->get('email_address'));

要以不同的方式呈现它,您需要使用以下视图帮助程序

表单标签

表单文本

表单元素错误

例如,如果您想呈现为定义列表,则可以使用类似

<dl class="zend_form">
    <dt><?php echo $this->formLabel($this->form->get('email_address')); ?></dt>
    <dd><?php echo $this->formText($this->form->get('email_address')); ?>
        <?php echo $this->formElementErrors($this->form->get('email_address')); ?></dd>
</dl>

我希望这能为你指明正确的方向

最新更新