Может ли пользовательский декоратор получить доступ к частям $ содержимого
В пользовательском декораторе я обертываю содержимое элемента с помощью div. Этот код создает div
вокруг обоих <dt> label
и <dd> element
public function render($content)
{
return '<div class="test">' . $content . '</div>';
}
Есть ли способ, которым я могу получить доступ к этим 2 частям, дд и дт. Например, обернуть div только вокруг <dt>
или <dd>
, Как получить доступ к различным частям $content
?
1 ответ
Если нет необходимости создавать собственный декоратор для того, чего вы хотите достичь, вы можете попробовать декорировать элемент напрямую, как показано ниже:
$elementDecorators = array(
'ViewHelper',
array(array('element'=>'HtmlTag'), array('tag' => 'dd')),
array('Label', array('tag' => 'dt')),
array(array('wrapper'=>'HtmlTag'), array('tag' => 'div')),
);
этот шуд производит разметку примерно так:
<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')),
);
этот шуд производит:
<div>
<dt><label/></dt>
<dd><span><input/></span></dd>
</div>
который просто оборачивает тег span вокруг элемента до того, как это сделает тег dd.
после оформления вы можете просто добавить переменную в качестве декоратора элемента.