10

我需要的 HTML:

<label for="text_field_username">User Name</lable>
<input type="text" id="text_field_username" name="text_field_username" class="form-control" />

我希望标签的 for 链接到输入的 id。这样,用户可以单击标签以突出显示输入。对复选框更有用。另外,不太重要的是,我想为输入字段开设一个课程。

我尝试过但对我不起作用的方法:

echo $this->formRow($form->get('usr_name'));

我也尝试使用部分布局。

echo $this->formElement($element);

在发布这个问题之前,我遇到了这个文档 framework.zend.com/manual/2.2/en/modules/zend.form.view.helpers.html#formlabel

它不起作用。它添加了 for 但它没有指向任何内容。!?

4

2 回答 2

10

View partials 有助于表单的呈现,但它们不处理表单元素本身的属性。这是由表单类处理的,它是表单元素的集合(即 TextElement)

您可以setAttribute('class', 'class name')在任何表单元素上使用

因此,在init()您的表单方法中,这应该有效:

$element = $this->getElement('text_field_username');
$element->setAttribute('class', 'class name');
于 2013-10-04T09:55:45.607 回答
8

您也可以在继承的表单助手类中设置它,如下所示:

namespace Application\Form;
use Zend\Form\Form;
class NexForm extends Form
{
public function __construct($name = null)
{
    parent::__construct('Nex');
    $this->setAttribute('method', 'post');
    $this->setAttribute(
        'enctype',
        'multipart/form- data'
    );
    $this->add(array(
        'name' => 'default_widget',

        'attributes' => array(
            'type' => 'text',
            'id'   => 'default_widget',
            'class' => 'mtz-monthpicker-widgetcontainer',
            'required' => 'required',
        ),
        'options' => array(
            'label' => 'Please choose the month of records you want to display:',
        ),
    ));
}
}

在您看来,只需致电:

     $nex=$this->app;   //app is the form object we passed from controller to view
     echo $this->formElement($nex->get('default_widget'));
于 2014-10-28T12:35:16.263 回答