Рендеринг нескольких действий (с представлениями) в Yii - PullRequest
3 голосов
/ 06 февраля 2012

Я привык работать с Zend Framework, где я могу сделать частичный рендер.В этом рендере вызывается соответствующее действие, и я получаю выходные данные рендера.

Теперь, есть ли способ сделать что-то подобное с YII тоже?Я делаю запрос к контроллеру / действию, которое является отчетом о нескольких вычислениях.Поскольку комбинация вычислений не одинакова для каждого отчета, я создал контроллер для каждого вычисления.У каждого контроллера есть действие, называемое отчетом, в котором выполняются вычисления.В этом действии отчета используются данные из базы данных.Есть ли способ создать страницу с несколькими представлениями?(по одному на каждый расчет)

Ответы [ 4 ]

3 голосов
/ 06 февраля 2012

Имеется одна функция контроллера, в которой он вызывал разные функции для получения различных вычислений для получения данных, а затем анализирует их в шаблоне, где вы можете затем анализировать их в партиалы.

В контроллере

public function actionCal()
{    
     $data = array();
     $data['finance'] = $this->financeCal();
     $data['holiday'] = $this->holidayCal();                            
     $this->render('calculation', array('data'=>$data));
}

В поле зрения

    <?php $this->renderPartial('//cal/_finance_summary', array('financeData'=>$data['finance'])); ?>
    <?php $this->renderPartial('//cal/_holioday_summary', array('holidayData'=>$data['holiday'])); ?>
1 голос
/ 06 февраля 2012

У вас есть renderPartial в Yii, так что это не должно быть проблемой. Просто структурируйте свои методы (действия) таким образом, чтобы вы могли их повторно использовать. PS: 3-ий параметр для renderPartial позволяет вам возвращать выходные данные вместо напечатанных.

0 голосов
/ 07 февраля 2012

Также для этой цели вы можете использовать виджеты Yii.

0 голосов
/ 07 февраля 2012

Я только что добавил public property $data в свой базовый класс Controller.Затем в каждом действии я использую $this->data для отправки переменных в представления.И если мне нужно визуализировать какой-либо файл представления из другого файла представления, я также использую $this->data

...