如何为最外面的装饰器添加属性?

时间:2014-01-31 17:03:32

标签: php zend-framework zend-form

希望有人能够对此有所了解:

我有一个装饰器,它在各种元素上包装tr / td个标签。到现在为止还挺好。但是,我有一个'break'元素,它在表单上放置一个空白区域来帮助分组。

这有以下PHP:

public $elementBreakDecorator = array(
    'ViewHelper',
    'Errors',
    array(array('data' => 'HtmlTag'), array('tag' => 'td', 'class' => 'form_break')),
    array('label', array('tag' => 'td', 'colspan'=> '4')),
    array(array('row' => 'HtmlTag'), array('tag' => 'tr'))
);

使用如下:

$this->addElement('hidden', 'break', array(
    'decorators' => $this->elementBreakDecorator,
    'label' => 'Optional text for break element')            
);

并生成以下标记:

<tr>
    <td id="break-label">
        <label for="break" colspan="4" class="optional">Optional text for break element</label>
    </td>
    <td class="form_break">
        <input type="hidden" name="break" value="" id="break" />
    </td>
</tr>

我需要的是colspan标记中显示的break-label,而不是label标记。我尝试了不同的安排,但不能把它放到我想要的地方。

有人知道我错过了什么吗?

注意:
这与5332832类似,但tagClass仅在标记中写入class=xx。其他答案不起作用。

1 个答案:

答案 0 :(得分:0)

就个人而言,我会删除Label装饰器,我会添加一个prepend自定义装饰器
这是允许我了解这种技术的website (wiip.fr)(用法语,但示例很清楚),否则,我发现it。肯定还有其他:)

我希望这个对你有用。 :)