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

时间:2016-02-26 01:13:03

标签: zend-framework zend-framework2 zend-form

Bootstrap示例代码

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>

上面我们有一个&lt; label&gt; 标记,在其文字内容“电子邮件地址”后直接关闭。

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

  

模块/ MyApp的/ SRC / MyModule的/窗体/ MyForm.php

namespace MyModule\Form;

use Zend\Form\Form;

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 Framework生成代码

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

在上面的HTML中,您可以看到Zend 关闭&lt; label&gt; 标记。相反,&lt; label&gt; 会对其子级进行封装。

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

1 个答案:

答案 0 :(得分:0)

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

要以不同方式呈现它,您需要使用以下视图助手

FormLabel

FORMTEXT

FormElementErrors

例如,如果要渲染为定义列表,则可以使用类似

的内容
<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>

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