Для отображения информации по текущему пользователю необходимо передать объект пользователя в шаблон. Это можно сделать несколькими способами:
Мы покажем все способы и остановимся на получение данных в шаблоне через toolkit.
Для этого способа необходоимо создать базовый класс BaseShopController со следующим кодом:
class BaseShopController extends lmbController { function performAction() { $this->view->set('user', $this->toolkit->getUser()); return parent :: performAction(); } }
После этого в MACRO шаблоне объект пользователя будет доступен в корневом контейнере данных, то есть можно будет использовать такие выражения:
<? if($this->user()->is_logged_in) { ?> Logged in as :{{$#user.name}} <? } ?>
MACRO-позволяет использовать обычные php-вставки. Поэтому мы можем легко получить тулкит прямо в шаблоне и передать объект user в нужный нам контейнер данных, например:
[...] <dl id="profile"> <dt>Profile</dt> <dd> <? if(lmbToolkit :: instance()->getUser()->is_logged_in) { ?> Logged in as :{{$#user.name}} <? } ?> </dd> </dl> [...]
Если ваш верстальщик нормально относится к подобным php-вставкам в шаблонах - можете смело воспользоваться таким методом.
Этот способ предусматривает добавление нескольких строк в фильтр:
class SampleFilter implements lmbInterceptingFilter { function run($filter_chain) { $toolkit = lmbToolkit :: instance(); $user = $toolkit->getUser(); [...] $toolkit->getView()->set('user', $user); [...] } }
Данная небольшая модификация позволит использовать user из корневого контейнера данных, как в способе с базовым контроллером.
Начиная с версии пакета WEB_APP 0.4 (соответствует релизу 2007.2) toolkit поддерживает получение данных через базовые методы get(), к кому же toolkit стал доступен в шаблоне в корневой контейнере данных. Все это позволяет даже не заботиться о передаче user-а в шаблон, а действовать в стиле PullView:
[...] <?php $user = lmbToolkit :: instance()->getUser(); if($user->is_logged_in) { ?> <dl id="profile"> <dt>Profile</dt> <dd> <p>Logged in as :{$user.name}</p> <p>email: {$user.email}</p> <p><a href="/user/logout">Logout</a></p> </dd> </dl> <? } ?> [...]
На этом способе мы и остановимся.
Как видите, способов достаточно много. Начиная с релиза 2007.2, мы рекомендуем использовать способ получения данных в шаблоне через toolkit.
Если вы модифицировали шаблон front_page_layout.phtml, то теперь после аутентификации на странице /login вы сможете увидеть данные своей учетной записи в левой части страницы.
Обсуждение