Zend_Form_decorator自定义类输入

时间:2013-12-17 15:36:08

标签: php forms zend-framework zend-decorators

目前我正在和Zend合作,我想解决一个小问题。

我有一个我想要添加到每个文本类型输入的类,但是我没有设置该类attrib,而是想从自定义表单装饰器中添加它,因为它必须在每个文本输入和textarea上你知道有时一次又一次地做某事很烦人。

我对Zend很新,所以我不知道应该从哪里开始...

仅仅为文本元素提供装饰器的代码:

'Zend_Form_Element_Text' => array(
    'ViewHelper',
    'Errors',
    array ('Description',  array('tag' => 'td','class' =>'iconset', 'escape'=>false )),
    array (array ('data' => 'HtmlTag'), array ('tag' => 'td', 'class' => 'element')),
    array ('Label', array ('tag' => 'td')),
    array (array ('row' => 'HtmlTag'), array ('tag' => 'tr'))
),

使用此Zend生成表单

的这一部分
<tr>
    <td><label>Labeltext</label></td>
    <td><input type="text" id="someid" name="somename" value="" /></td>
</tr>

我想锻炼用这个表单装饰器创建的每个元素都有一个类例如:“myclass”在这样的基础

<tr>
    <td><label>Labeltext</label></td>
    <td><input type="text" id="someid" name="somename" value="" class="myclass" /></td>
</tr>

1 个答案:

答案 0 :(得分:0)

我看到的问题是,你要改变的部分不是装饰者,而是视图本身。现在我可能已经不在这个循环中了,但是我看到如何最容易解决这个问题的方法是子类化(使PHP类从Zend_Form_Element_*扩展)你想要的输入元素类型CSS类集,并在初始化部分的某处设置此CSS类。然后在需要的地方使用新的PHP类/元素。