====== Шаг4.3 Отображение профайла пользователя ====== ===== Различные способы передачи данных в MACRO-шаблон ===== Для отображения информации по текущему пользователю необходимо передать объект пользователя в шаблон. Это можно сделать несколькими способами: * Передавать пользователя в шаблон из контроллера. Для этого можно создать базовый контроллер, который будет заниматься передачей данных в шаблон, а остальные контроллеры отнаследовать от него. * Получать пользователя при помощи php-вставки непосредственно в MACRO-шаблоне. * Передавать данные о пользователе при помощи специального фильтра. * Получение данных прямо в шаблоне через toolkit. Мы покажем все способы и остановимся на получение данных в шаблоне через toolkit. ==== Передача данных в шаблон из контроллера ==== Для этого способа необходоимо создать базовый класс %%BaseShopController%% со следующим кодом: class BaseShopController extends lmbController { function performAction() { $this->view->set('user', $this->toolkit->getUser()); return parent :: performAction(); } } После этого в MACRO шаблоне объект пользователя будет доступен в корневом контейнере данных, то есть можно будет использовать такие выражения: user()->is_logged_in) { ?> Logged in as :{{$#user.name}} ==== Использование php-вставок в MACRO-шаблоне ==== MACRO-позволяет использовать обычные php-вставки. Поэтому мы можем легко получить тулкит прямо в шаблоне и передать объект user в нужный нам контейнер данных, например: [...]
Profile
getUser()->is_logged_in) { ?> Logged in as :{{$#user.name}}
[...]
Если ваш верстальщик нормально относится к подобным php-вставкам в шаблонах - можете смело воспользоваться таким методом. ==== Использование фильтра ==== Этот способ предусматривает добавление нескольких строк в фильтр: class SampleFilter implements lmbInterceptingFilter { function run($filter_chain) { $toolkit = lmbToolkit :: instance(); $user = $toolkit->getUser(); [...] $toolkit->getView()->set('user', $user); [...] } } Данная небольшая модификация позволит использовать user из корневого контейнера данных, как в способе с базовым контроллером. ==== Получение данных прямо в шаблоне через toolkit ==== Начиная с версии пакета WEB_APP 0.4 (соответствует релизу 2007.2) toolkit поддерживает получение данных через базовые методы get(), к кому же toolkit стал доступен в шаблоне в корневой контейнере данных. Все это позволяет даже не заботиться о передаче user-а в шаблон, а действовать в стиле %%PullView%%: [...] getUser(); if($user->is_logged_in) { ?>
Profile

Logged in as :{$user.name}

email: {$user.email}

Logout

[...]
На этом способе мы и остановимся. Как видите, способов достаточно много. Начиная с релиза 2007.2, мы рекомендуем использовать способ получения данных в шаблоне через toolkit. ===== Предварительные итоги ===== Если вы модифицировали шаблон front_page_layout.phtml, то теперь после аутентификации на странице /login вы сможете увидеть данные своей учетной записи в левой части страницы. {{limb3:ru:tutorials:shop:login_success.png|}} ===== Далее ===== [[step5|Шаг5. Отображение списка товаров для покупателей. Поиск товаров]]