Yii: Доступ к атрибуту модели из файла шаблона (Вызов в шаблоне какого-либо атрибута модели).

Yii: Доступ к атрибуту модели из файла шаблона (Вызов в шаблоне какого-либо атрибута модели). Как в Yii в каком-либо layout получить значение атрибута из таблицы (модели).

Доступ к атрибуту модели из файла шаблона.

Задача: хочу в layout для внутренней страницы сайта использовать значение из модели. Например, в какой-нибудь соответствующей своей модели таблице храню в столбце vkgroupid идентификаторы для группы вконтакте для каждого коллектива ДК Северное Чертаново. А виджет группы хочу выводить в левом столбце в шаблоне для страницы коллектива. Вот и получается, что надо значение атрибута vkgroupid передать в шаблон, а не в views/_view.php. Сделал это так.

Например в layout/column2_group.php (вызываю $this->vkgroupid;)

<script type="text/javascript" src="http://userapi.com/js/api/openapi.js?24"></script>
        <!-- VK Widget -->
<div id="vk_groups"></div>
<script type="text/javascript">
VK.Widgets.Group("vk_groups", {mode: 0, width: "auto", height: "290"}, <?php echo $this->vkgroupid; ?>);
</script><br /> 
Добавил в components/Controller.php
public $vkgroupid;

И в представлении views/group/view.php

$this->vkgroupid=$model->vkgroupid;   

Теперь в шаблоне работает вызов $this->vkgroupid;

Может как-то по-другому можно сделать, подскажите, пожалуйста, если кто-то сталкивался, ваше решение. 

 

Источник: loco.ru

almix
Разработчик Loco, автор статей по веб-разработке на Yii, CodeIgniter, MODx и прочих инструментах. Создатель Team Sense.

Вы можете почитать все статьи от almix'а.



Другие статьи по этой теме:

Комментарии (2)     Подпишитесь на RSS комментариев к этой статье.

2 комментариев

#1095
sim говорит:
February 17, 2014 at 07:31 pm

Для этих целей логичнее использовать "clip"

http://www.yiiframework.com/doc/api/1.1/CBaseController

посмотрите beginClip.

Т/е в разметке выводятся clip-ы, а их содержимое определяется во вьхах.

#1096
Mota говорит:
February 18, 2014 at 05:20 am

Есть 3 способа передачи динамического содержимого в представление:

1. Биндинг переменной при рендере представления

2. Вызов самого контроллера и его свойств или методов в представлении

3. Вызов виджета в пердставлении.

Последний подходит для громоздких участков HTML-кода, поэтому пушкой по воробьям бить не будем, а вот первый способ больше подходит, согласно парадигме MVC, поэтому советую использовать его.