Dwoo - вы можете получить доступ к другим переменным во время цикла? - PullRequest
0 голосов
/ 21 января 2010

Правильно ли я считаю, что вы не можете получить доступ к переменной вне цикла во время цикла?

Например:

{loop $ nav_header}
<li><a href="{$link}"><img src="{$template.imagefolder}/{$icon}" width="48" height="48" border="0" alt="{$title}" /><br />{$title}</a></li>
{/ loop}

где я пытаюсь использовать $ template.imagefolder (как пример) вне цикла?

Ваш,
Крис

1 Ответ

3 голосов
/ 22 января 2010

(Копирование моего ответа из http://forum.dwoo.org/viewtopic.php?id=617 для дальнейшего использования)

Ну, вы можете, но вы должны точно знать, что вы хотите ..

$ nav_header isмассив, чтобы вы могли получить к нему доступ из вне цикла, выполнив, например, {$ nav_header.0.template.imagefolder}, который даст вам то, что вы хотите для первого элемента массива.

Если вы хотите получить доступ к переменной верхнего уровня из в цикле, т.е. если у вас есть $ path и $ nav_header в вашем главном узле данных, вы должны сделать {$ _. Path},что эквивалентно {$ _parent.path}

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

{foreach $nav_header elem}
    <li><a href="{$elem.link}"><img src="{$elem.template.imagefolder}/{$elem.icon}" width="48" height="48" border="0" alt="{$elem.title}" /><br />{$elem.title}</a></li>
    {if $elem.title == "foo"}{$folder = $elem.template.imagefolder}{/if}
{/foreach}

{$folder}

Hopeэто помогает.

...