gpt4 book ai didi

php - Yii 中的样式管理页面

转载 作者:行者123 更新时间:2023-11-28 12:38:44 25 4
gpt4 key购买 nike

我又来问一个关于 yii 框架的问题。

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

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

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

但是我得到一个错误。因为 $content 没有定义。

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

最佳答案

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

你可能知道,如果你已经为你的应用程序设置了一个主题(在主配置文件中 'theme'=>'myTheme' ),Yii 会在 themes/myTheme 中查找它所有 View 都将在 themes/myTheme/views/x/y.php 中呈现而不是 views/x/y.php .此外,您的布局将被位于 themes/myTheme/layouts 中的布局覆盖。 .

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

  1. 深色主题
  2. LightTheme

我们应该创建如下结构:

+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.php它包含我们的基本主题结构(骨架)和 2 个名为 myLayout1.php 的布局和 myLayout2.php分别。此外,我们已经在基本 Controller 中定义了默认布局(通常为 Controller.php ),如下所示:

public $layout='//layouts/myLayout1';

现在,我们有了一个主布局,它显示了 myLayout1 中的所有内容默认情况下。我们可以像下面这样更改布局:

$this->layout="myLayout2";

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

Yii::app()->theme="lightTheme";

Note: Theme name is case-sensitive. If you attempt to activate a theme that does not exist, Yii::app()->theme will return null.

以上代码可以写成beforeAction()方法或每个 Action 。请注意,如果您呈现 myView1 ( $this->render('myView1') ) 如果主题设置为 darkTheme , Yii 将渲染 themes/darkTheme/views/myController/myView1.php而不是 views/myConteoller/myView1.php .


为了更清楚,$content将在布局中使用。此外,值得注意的是,$content将被 View 中的所有内容替换。所以如果你想修改整个页面的架构,你必须修改main.php布局。前面,如果你想修改 View 内容的样式,你需要修改你的布局。

关于php - Yii 中的样式管理页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27027272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com