2012-04-25 116 views
8

我是Yii Framework的新手,并且创建了一个基于模块的CRM。 使用不同的教程,我能够创建自己的主题,但现在我陷入了一个困境。yii框架中的主题和布局

在我的主题,上<nav>离开<nav>保持整个应用程序的相同,直到用户登录。这就是为什么我做了我的main.php的一部分,但在那里的登录页面没有按钮显示,只是简单登录表格与2 textfields

如何在使用自定义主题的应用程序中实现此表单?

我试图在该特定操作中定义布局但未成功。任何帮助,将不胜感激。

+1

请详细说明,并展示一些代码,我也许能够给你的想法,但我并不清楚地了解这个问题。 – ddinchev 2012-04-25 10:50:35

+0

这个问题与代码无关,因为yii框架中的布局是由main.php文件中的文件夹结构和单个数组索引创建的。我只是想知道,有什么方法可以为一个页面使用不同的主题? – 2012-04-25 10:55:36

回答

13

为您的视图使用自定义布局是正确的选择。 您可以在控制器操作中或在视图中设置布局。

$this->layout = "//layouts/mylayout"; 

注意,默认布局column1.phpcolumn2.php也使用main.php布局文件。

+0

我已经试过这个,但没有运气.... – 2012-04-25 11:35:08

+0

你的输出是什么? a)只是“原始”的内容? - >找不到布局文件。 b)没有明显的变化? - >布局没有得到应用。 Yii使用哪个版本? – schmunk 2012-04-25 12:42:18

+1

是的内容是以原始格式显示,你是正确的错误是在路径我已经使用布局,而不是布局。谢谢你的帮助。 – 2012-04-25 12:51:26

7

试着一步一步来:

  1. 创建新主题

    您可以创建一个新的主题,将其添加到目录 Application_Root /主题

    查看主题/经典目录以获得目录结构的概念。 重要文件(在此阶段)是: - Application_Root /主题/视图/布局/ main.php

  2. 自定义您的主题内容

    复制的CSS,图像,js文件等的正确的目录并根据你的喜好更改main.php文件。例如,如果你的main.php说

    <链接HREF = “CSS/mystyle.css” 相对= “样式” >

    然后,你将有一个文件 Application_Root/CSS/mystyle.css

  3. 创建内容占位符。

    在你的main.php中的某个地方,会有一个动态文本的占位符,由它指定。

    <?php echo $ content; ? >

  4. 告诉yii使用主题。 通过在最后一行(包含右括号)之前添加以下行来更改文件Application_Root/protected/config/main.php

    '主题'=> 'surveyhub'

  5. 创建布局占位符。

    创建一个HTML段,将写入main.php的$ contents部分。将其称为例如one_column.php。因此文件路径将为Application_Root/themes/views/layouts/one_column.php在该文件中,您希望放置动态文本的位置创建一个占位符。

    <?php echo $ content; ? >

  6. 告诉Yii中使用的布局。

    在文件Application_Root /保护/组件/ Controller.php这样,添加或修改布局变量如下:

    公共$布局= '//布局/ one_column.php';

  7. 刷新页面