Yii中的样式管理页面

时间:2014-11-19 21:24:36

标签: php css templates yii

我再次提出有关yii框架的问题。

我在views/myviewname/admin.php.下面有一个页面 我在views/myotherviewname/admin.php.下面有一个页面 现在我想给那些页面另一种风格。但是我该怎么做?

我在themes/classis/views/myviewname/admin.php下创建了一个页面,在该文件中我得到了这个:

<?php /* @var $this Controller */ ?>
<?php echo $content; ?>

但是我收到了一个错误。因为$content未定义。

我如何设计这些页面的样式?如果我可以一次设置所有管理页面的样式,那就太好了。

1 个答案:

答案 0 :(得分:2)

首先,不可否认的是,$content变量将被称为未定义,因为它只能用于Layouts,而不能用于Views

您可能知道,如果您已经为应用程序设置了主题(在'theme'=>'myTheme'的主配置文件中),Yii会在themes/myTheme中查找该主题,并且所有视图都将在{{ 1}}而不是themes/myTheme/views/x/y.php。此外,您的布局将被位于views/x/y.php的布局覆盖。

现在,我们假设我们要创建2个主题:

  1. DarkTheme
  2. LightTheme
  3. 我们应该创建如下结构:

    themes/myTheme/layouts

    我们有一个+themes +darkTheme +views +layouts +main.php +myLayout1.php +myLayout2.php +myController +myView1.php +lightTheme +views +layouts +main.php +myLayout1.php +myLayout2.php +myController +myView1.php ,它包含我们的基本主题结构(骨架),以及分别名为main.phpmyLayout1.php的2个布局。我们还已经在我们的基本控制器中定义了一个默认布局(通常为myLayout2.php),如下所示:

    Controller.php

    现在,我们有一个主要布局,默认显示public $layout='//layouts/myLayout1'; 内的所有内容。我们可以在下面的操作中更改布局:

    myLayout1

    我们也可以像下面这样更改应用主题:

    $this->layout="myLayout2";
    
      

    注意:主题名称区分大小写。如果您尝试激活不存在的主题,Yii :: app() - &gt;主题将返回null。

    以上代码可以写入Yii::app()->theme="lightTheme"; 方法或每个操作。请注意,如果您呈现beforeAction()myView1)并且主题设置为$this->render('myView1'),则Yii将呈现darkTheme而不是themes/darkTheme/views/myController/myView1.php


    为了更清楚,views/myConteoller/myView1.php将用于布局。此外,值得注意的是,$content将被视图中的所有内容所取代。因此,如果要修改整个页面的架构,则必须修改$content布局。在前面,如果要修改视图内容的样式,则需要修改布局。