メインビューでは、インクルードする代わりに
<?php echo $this->renderPartial('_page1', array('model'=>$model)); ?>
アップデート:
好みに応じて、protected / views / controller/page1.phpおよびprotected/views / controller/page2.phpコンテンツ
protected / views / layouts / custom.php:
<?php $this->beginContent('//layouts/main'); ?>
<div id="page">
<div id="menu">
<?php echo CHtml::ajaxLink('Page1', array('controller/page1'), array('update' => '#content')); ?>
<?php echo CHtml::ajaxLink('Page2', array('controller/page2'), array('update' => '#content')); ?>
</div>
<div id="content">
<?php echo $content; ?>
</div>
</div>
<?php $this->endContent(); ?>
protected / controllers / ControllerController.php:
class ControllerController extends Controller {
/**
* @var string the default layout for the views.
*/
public $layout = '//layouts/custom';
public function actionPage1() {
if (Yii::app()->request->isAjaxRequest)
$this->renderPartial('page1');
else
$this->render('page1');
}
public function actionPage2() {
if (Yii::app()->request->isAjaxRequest)
$this->renderPartial('page2');
else
$this->render('page2');
}
}
UPDATE2:
アドレスバーのリンクも変更する必要がある場合は、ajaxではなく通常のリンクを使用するしかありません。<?php echo CHtml::link('Page1', array('controller/page1')); ?>
ajaxを使用するのが好ましい方法は、あなたが述べたようにハッシュを使用することです。