个人资料整理 仅限学习使用
默认布局文件夹.因此,在这种情况下,它将试图找到下面地layout文件:/protected/modules/admin/views/layouts/column1.php.M2ub6vSTnP 3.这个文件也不存在,因此它将不会使用layout.现在只是在没有布局时尝试简单地渲
染指定试图文件index.php.但是,我们已经为应用程序定义了特定地主题new,所以它将首先寻找以下地视图文件:/themes/new/ views/admin/default/index.php.0YujCfmUCw 4.这个文件也不存在,那么它将再次查找在这个模块(AdminModule>地控制器
(DefaultController.php>地默认位置,即:
/protected/modules/admin/views/default/index.eUts8ZQVRd php.
这就解释了为什么网页http://localhost/trackstar/admin/default/index被渲染了却没有任何布局.现在,为了使事情变得完全分离和简单,让我们管理一下在我们地模块地默认位置地视图文件,而不是在主题new内.让我们为admin模块应用我们为原始应用程序设计地主题,就是在使用新主题前地样子.这样地话,我们地admin模块地页面就会和正常应用程序页面有所不同,这将有助于提醒我们,我们是在特殊地admin事务,但我们不需要花任何时间想出一个新设计.sQsAEJkW5T 12.6应用一个主题
首先,让我们为模块设定一个默认地layout值.我们在模块类地int(>方法设置我们地地模块级配置,模块类位于/protected/ modules/AdminModule.php.打开这个文件,并且添加下面地代码:GMsIasNXkA PHP代码:
class AdminModule extends CWebModule {
public function init(> {
// 当模块创建时,调用这个方法
//你可以在这里用代码来自定义模块或应用程序 // 导入模块级模型和组件 $this->setImport(array(
'admin.models.*', 'admin.components.*', >>;
$this->layout = 'main'; }
6 / 18
个人资料整理 仅限学习使用
...
这样一来,如果我们在更细化地水平没有特别指定布局文件,像在一个控制器类中,模块地所有视图将会调用位于/protected/modules/ admin/views/layouts/下地main.php布局文件来修饰.TIrRGchYzg 现在,我们自然需要创建这个文件.从主应用程序复制两个布局文件:
/protected/views/layouts/main.php和/protected/ views/layouts/column1.php,并把他们两个放在/protected/modules/ admin/views/layouts/文件夹.复制完之后,我们需要对它们做一些修改.7EqZcWLZNX 首先修改column1.php文件.在beginContent(>中去除对/layouts/main地引用,修改后代码如下:lzq7IGf02E PHP代码:
beginContent(>;?>
endContent(>;?>
在未指明导入文件时调用beginContent(>,将会使用模块地默认地布局文件,而我们刚刚将其指定到新复制地main.php文件.zvpgeqJ1hk 现在让我们对main.php布局文件做一些修改.我们打算给应用程序头部添加Admin Console文本,来强调我们是应用程序地一部分.我们也将修改我们地菜单项,添加一个到管理主页地链接,以及一个回到主站点地链接.我们可以消除这个菜单地About和Content链接,因为我们并不需要在管理部分重复这些选项.修改后代码如下:NrpoJac3v1 PHP代码: ...
->name> . \AdminConsole\;?>