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

Yii renderPartial подхватить layout

Добавлено: 2012.11.17, 15:47
NeverDie
Здравствуйте! Подскажите, пожалуйста, есть ли способ, при котором при выводе через renderPartial, можно подхватить только 1 вышестояющий layout. Структура layouts у меня такая:
Файл //layouts/main

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

<html>
...
<?=$content?>
...
</html>
Файл //layouts/templates/tmp_two_columns

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

<?php $this->beginContent('//layouts/main'); ?>
<aside class = "c-left">
    <?php echo $content; ?>
</aside>
<aside class = "c-right">
    <?php $this->beginContent('//layouts/parts/right_column'); ?>
    <?php $this->endContent(); ?>
</aside>
<?php $this->endContent(); ?>
Возможно ли сделать так, чтобы при задании

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

public $layout='//layouts/templates/tmp_two_columns';
...
$this->renderPartial('update',array(
    'model'=>$model,
));
...
 
через renderPartial подхватывался данный layout и выводился вместе с update, а layout main игнорировался ?

Re: Yii renderPartial подхватить layout

Добавлено: 2012.11.17, 16:12
Ghost_nsk

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

<?php
public function actionPageUpdate(){
$this->layout = '//layouts/templates/tmp_two_columns';
...
}
?>

Re: Yii renderPartial подхватить layout

Добавлено: 2012.11.17, 16:15
NeverDie
Ghost_nsk писал(а):

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

<?php
public function actionPageUpdate(){
$this->layout = '//layouts/templates/tmp_two_columns';
...
}
?>
renderPartial проигнирурует данную запись и вернет лишь содержимое файла update. Мне же необходимо, что бы вернулось содержимое ещё и данного layout, но проигнорировался main

Re: Yii renderPartial подхватить layout

Добавлено: 2012.11.17, 16:19
NeverDie
Я ещё думал о создании пустого layout и вывод в него содержимого через обычный render. Но хотелось бы решить задачу без этого костыля

Re: Yii renderPartial подхватить layout

Добавлено: 2012.11.17, 16:48
Ghost_nsk
че ты мне паришь, у меня все ок работает на всех проектах :)

контроллер:

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

<?php
public function actionPageUpdate(){
$this->layout = '//layouts/templates/tmp_two_columns';
// тут формируем переменную $model
...
$this->render('page/update',array('model'=>$model));
}
?>
Отображение:

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

<h4 class="grey">Изменение анкеты:</h4>
<?php echo $this->renderPartial('page/_form', array('model'=>$model)); ?>
P.S. //layouts/templates/tmp_two_columns используется вместо main, то есть это равнозначный layout, а не дополнение :)

Re: Yii renderPartial подхватить layout

Добавлено: 2012.11.17, 16:57
kukuruku
renderPartial специально не подхватывает layout, иначе зачем он нужен?
или делать обрезанный layout и вызывать через рендер