2010-10-07 3 views
0

В пользовательском декораторе я обертываю содержимое элемента div. Этот код создает div вокруг как <dt> label и <dd> element

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

Есть ли способ, я могу дополнительно получить доступ к этим 2-х частей, в дд и ДТ. Например, возможно, оберните div только <dt> или <dd>. Как получить доступ к различным частям $content?

+0

Это '', поэтому обертка div вокруг dt или dd приведет к недействительной разметке. – Gordon

+0

@ Gordon, я согласен, но мне все равно нужно получить доступ к этим отдельным частям контента, чтобы я мог попробовать что-то сделать с ними. – jblue

+0

Я не уверен, что вы можете складывать декодеры HtmlTag, чтобы обернуть div вокруг метки и каждого элемента , Сама этикетка также является декоратором. Но вы можете определенно написать свой собственный декоратор ярлыков. В основном это все во второй статье, которую я дал вам вчера. – Gordon

ответ

2

Если это не то, что необходимо для создания пользовательского декоратора для того, что вы хотите достичь, вы можете попробовать украшения элемента непосредственно, как следующее:

$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>

и поэтому, если вы хотите добавить, что вы хотите в/между/до/после дд или дт вы можете изменить, как так:

$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>

, который просто оборачивает пролетом тег вокруг элемента до того, как метка дд делает.

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