Страница 1 из 1

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

Добавлено: 2013.07.03, 12:17
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, который берёт данные из БД при использовании кеша шаблона.

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

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

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

сдается мне, что эти meals и countries лучше вообще в модель вынести.

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

Добавлено: 2013.07.03, 14:59
ElisDN
Перенести статически в модель:

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

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

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

Добавлено: 2013.07.19, 11:16
Linux
ElisDN писал(а):Перенести статически в модель:

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

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

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

Добавлено: 2013.07.19, 11:29
lancedevnull
functiom getMeals(){
//@todo: cache
}