在自定义装饰器中,我用div包装元素内容。此代码围绕div
和<dt> label
<dd> element
public function render($content)
{
return '<div class="test">' . $content . '</div>';
}
有没有办法可以进一步访问这两个部分,dd和dt。例如,可能只包围<dt>
或<dd>
的div。如何访问$content
的不同部分?
答案 0 :(得分:2)
如果没有必要为您想要实现的目标创建自定义装饰器,您可以尝试直接装饰元素,如下所示:
$elementDecorators = array(
'ViewHelper',
array(array('element'=>'HtmlTag'), array('tag' => 'dd')),
array('Label', array('tag' => 'dt')),
array(array('wrapper'=>'HtmlTag'), array('tag' => 'div')),
);
shud会产生这样的标记:
<div>
<dt><label/></dt>
<dd><input/></dd>
</div>
所以如果你想在dd或dt之内/之间/之前/之后添加任何你想要的东西,你可以这样修改:
$elementDecorators = array(
'ViewHelper',
array(array('addition'=>'HtmlTag'), array('tag' => 'span')),
array(array('element'=>'HtmlTag'), array('tag' => 'dd')),
array('Label', array('tag' => 'dt')),
array(array('wrapper'=>'HtmlTag'), array('tag' => 'div')),
);
shud产生:
<div>
<dt><label/></dt>
<dd><span><input/></span></dd>
</div>
它只是在dd标记之前在元素周围包含span标记。
装饰后你可以简单地将变量添加为元素的装饰器。