PHP交流群:256726721

在使用yii做开发时,我们通常都是前后台分离
这个时候我没就会想到用yii模块功能,这时候大多数人都会遇到一个问题,前台和后台要用不同的布局文件,这时怎么办呢?其实yii提供这个功能 下面我们就来看看怎么做吧

我们创建了一个admin的模块  创建一个AdminController.php的控制器
150919486.png



比如说 我要调 这个 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(); ?>


结束


PHP交流群:256726721