Может ли пользовательский декоратор получить доступ к частям $ содержимого

В пользовательском декораторе я обертываю содержимое элемента с помощью 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.

после оформления вы можете просто добавить переменную в качестве декоратора элемента.

Другие вопросы по тегам