yii让系统不默认去调用Protected/views/layouts/ 里面的布局文件


在使用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(); ?>

结束

Archives