如何使用表单元素的表单装饰器实现以下功能:
<dt>
<ul>
<li>The errors</li>
<li>The errors</li>
</ul>
<label>The label</label>
</dt>
<dd>
<input type="text" value="The input field">
</dd>
换句话说,我想要在Label之前添加前缀,而不是在输入字段之后附加的错误。我做但是想要保留<dt>
和<dd>
标签,如上图所示。
答案 0 :(得分:5)
好吧,我发现了怎么做。渐渐地,装饰者开始对我有意义了:
$decorators = array(
'Label',
array( 'Errors', array( 'placement' => 'prepend' ) ),
array( array( 'dt' => 'HtmlTag' ), array( 'tag' => 'dt' ) ),
array( array( 'ddOpen' => 'HtmlTag' ), array( 'tag' => 'dd', 'openOnly' => true, 'placement' => 'append' ) ),
array( 'ViewHelper' ),
array( array( 'ddClose' => 'HtmlTag' ), array( 'tag' => 'dd', 'closeOnly' => true, 'placement' => 'append' ) )
);
这是做什么的:
然后设置装饰器:
// be sure to only set them, after you have added the relevant elements to the form
$this->setElementDecorators( $decorators );
<强> PS:强>
请注意,虽然我的特定示例生成invaliid html。 ;-)我后来才发现<ul>
元素不允许<dt>
元素与DOCTYPE
HTML 4.01 strict
答案 1 :(得分:0)
在表单类中,试试这个:
$this->setElementDecorators(array(
'Errors',
'ViewHelper',
'Label',
));