在使用yii做开发时,我们通常都是前后台分离
这个时候我没就会想到用yii模块功能,这时候大多数人都会遇到一个问题,前台和后台要用不同的布局文件,这时怎么办呢?其实yii提供这个功能 下面我们就来看看怎么做吧
我们创建了一个admin的模块 创建一个AdminController.php的控制器
比如说 我要调 这个 modules/admin/views/layouts/ column2.php 这个视图文件
那么在 contrllers/AdminController.php 这个 controller 文件里 要这样写
public $layout='/layouts/column2';
注意前面是 / 不是 //
如果是 // 就会默认去调 protected/views/layouts
这里就是 其实 就是 绝对和相对的关系
或者 public $layout='column2'; //column2 可以改成你想用用的文件
ok 到这里问题基本解决了 我在啰嗦一下 有很多人在这里以为工作完成了预览发现视图文件没有改过来 ???怎么回事呢? 也是很多人可能遇到的问题
我们用gii curd 创建生成控制器 默认用的是 column2.php视图文件
打开 columm2.php的文件发现
<?php $this->beginContent('//layouts/main'); ?>
原来是这里搞的鬼 哈哈 找到了 我们改一下就好了
<?php $this->beginContent('/layouts/main'); ?>
或者
<?php $this->beginContent('application.modules.admin.views.layouts.main'); ?> <div class="container"> <div class="span-19"> <div id="content"> <?php echo $content; ?> </div><!-- content --> </div> <div class="span-5 last"> <div id="sidebar"> <?php $this->beginWidget('zii.widgets.CPortlet', array( 'title'=>'Operations', )); $this->widget('zii.widgets.CMenu', array( 'items'=>$this->menu, 'htmlOptions'=>array('class'=>'operations'), )); $this->endWidget(); ?> </div><!-- sidebar --> </div> </div> <?php $this->endContent(); ?>
结束