Вызов метода контроллера из шаблона.

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Linux
Сообщения: 5
Зарегистрирован: 2012.02.18, 21:43

Вызов метода контроллера из шаблона.

Сообщение Linux »

Всем добрый день. Есть проект на Yii, в котором имеется класс:

Код: Выделить всё

class HotelsController extends Controller
{
    public function actionIndex()
    {
        $meals = $this->_getMeals();
        $countries = $this->_getCountries();

        $this->render('index', array('meals' => $meals, 'countries ' => $countries));
    }
}
 
и шаблон:

Код: Выделить всё

<?php if ($this->beginCache('hotelView', array('duration'=>$cacheTime))) : ?>
<? echo $meals; ?>
<? endif; ?>
но вот я не могу понять, такой способ генерации шаблона правильный? Или следует убрать из контроллера вызов _getMeals и т.д.:

Код: Выделить всё

<?php if ($this->beginCache('hotelView', array('duration'=>$cacheTime))) : ?>
<? echo $this->_getMeals(); ?>
<? endif; ?>
Ведь так получается, что не происходит "лишнего" обращения к методу _getMeals, который берёт данные из БД при использовании кеша шаблона.

Аватара пользователя
AlexSimp
Сообщения: 568
Зарегистрирован: 2013.04.09, 11:30
Откуда: Киев

Re: Вызов метода контроллера из шаблона.

Сообщение AlexSimp »

Ну да, как-то нелогично испольльзовать кеш внутри представления, при том что запросы все равно бегают...

[UPD] мой говнокод не заработал :(

сдается мне, что эти meals и countries лучше вообще в модель вынести.
Жду, когда на форуме появятся вопросы "как сделать сайт на Yii?" и "как сложить два числа с помощью Yii?"...

Аватара пользователя
ElisDN
Сообщения: 5594
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Вызов метода контроллера из шаблона.

Сообщение ElisDN »

Перенести статически в модель:

Код: Выделить всё

<?php if ($this->beginCache('hotelView', array('duration'=>$cacheTime))) : ?>
<? echo Meal::getMeals(); ?>
<? $this->endCache(); endif; ?>

Linux
Сообщения: 5
Зарегистрирован: 2012.02.18, 21:43

Re: Вызов метода контроллера из шаблона.

Сообщение Linux »

ElisDN писал(а):Перенести статически в модель:

Код: Выделить всё

<?php if ($this->beginCache('hotelView', array('duration'=>$cacheTime))) : ?>
<? echo Meal::getMeals(); ?>
<? $this->endCache(); endif; ?>
А какие плюсы это даст?

lancedevnull
Сообщения: 1268
Зарегистрирован: 2013.07.17, 17:37

Re: Вызов метода контроллера из шаблона.

Сообщение lancedevnull »

functiom getMeals(){
//@todo: cache
}

Ответить