可以自定义装饰器访问$ content的部分内容

时间:2010-10-07 07:00:50

标签: php zend-framework zend-form zend-decorators

在自定义装饰器中,我用div包装元素内容。此代码围绕div<dt> label

创建<dd> element
public function render($content)
{        
   return '<div class="test">' . $content . '</div>';
}

有没有办法可以进一步访问这两个部分,dd和dt。例如,可能只包围<dt><dd>的div。如何访问$content的不同部分?

1 个答案:

答案 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标记。

装饰后你可以简单地将变量添加为元素的装饰器。