Пример MACRO-шаблона:
<ul> <li><a href='{{route_url params="controller:member_home,action:personal"}}'>Изменить личные данные</a></li> <li><a href='{{route_url params="controller:member_home,action:change_password"}}'>Сменить пароль</a></li> </ul> {{list using='$tags' as="$item"}} <ul id='tags'> {{list:item}} <li><a href='/photo_category/item/{$#category.id}?tag={$item.id}' style="font-size:<?=($item['weight']+3)?>">{$item.title}</a></li> {{/list:item}} </ul> {{/list}}
{{list using='$tags' as="$item"}} <ul id='tags'> {{list:item}} <li><a href='/photo_category/item/{$#category.id}?tag={$item.id}' style="font-size:<?=($item['weight']+3)?>">{$item.title}</a></li> {{/list:item}} </ul> {{/list}} <?php // Теперь аналог на php if(count($tags)) { ?> <ul id='tags'> <?php foreach($tags as $item} { ?> <li><a href='/photo_category/item/<?php echo $this->category['id']; ?>?tag=<?php echo $item['id']; ?>' style="font-size:<?php echo($item['weight']+3)?>"> <?php echo $item['title']; ?> </a> </li> <?php } ?> </ul> <?php } ?>
(На самом деле код немного сложнее для обеспечения работы тегов list:empty, list:fill и других, но принцип должен быть понятен).
MACRO шаблон:
{{form name="my_form"}}
<?php $ds = $this->form_my_form->getDatasource();
if(isset($ds["value"])) echo $ds["value"]; ?>
{{/form}}
Управляющий php-код:
$page = new lmbMacroTemplate('my_template.phtml'); $page->set('form_my_form_datasource', array("value" => 1111));
В принципе, если вы работаете с пакетом VIEW, то о передаче данных и ошибок валидации в runtime-компоненты форм заботится lmbMacroView.
Обсуждение