Yii不呈现主题

时间:2013-08-07 13:51:35

标签: layout yii themes

我对Yii和主题有一个奇怪的问题。我在config / main.php中设置它,如:

'theme'=>'themeName',
像往常一样。但是当我尝试渲染视图时,它会按原样渲染,没有任何布局,就好像我调用了一样:

$this->renderPartial 

我仔细检查我没有调用renderPartial,主题似乎与我所做的所有其他主题相同。这个问题可以是什么?

感谢任何帮助,我对此不以为然......

1 个答案:

答案 0 :(得分:0)

以下是您需要检查的结构和语法

-yiiroot
-!-!protected
-!-!-!controllers
-!-!-!-!TestController.php 
-!-!themes
-!-!-!themeName (it was the one that you have set on config file)
-!-!-!-!views
-!-!-!-!-!layouts
-!-!-!-!-!-!main.php // It would be default what if public $layout has not been overwriten or the layout file which has been set was not found     
-!-!-!-!-!test
-!-!-!-!-!-!viewName.php 

在控制器TestController

  • 公共$layout是默认的主要内容或被覆盖

  • 您设置actionIndex

    $this->render('viewName');中的

如果您通过方法renderPartial()在控制器中直接呈现页面,则无法获得布局模板

  

render()通常用于渲染与a相对应的视图   用户在您的应用程序中看到“页面”。它首先呈现视图   您已指定然后呈现当前的布局   控制器动作(如果适用),放置第一个结果   渲染到布局中。然后它执行输出处理(在   这一次意味着自动插入任何必要的标签   并更新动态内容)并最终输出结果。

     

renderPartial()通常用于呈现页面的“片段”。该   与render()的主要区别在于此方法不会放置   布局中渲染的结果。默认情况下,它也不会执行   输出处理,但您可以使用。覆盖此行为   $ processOutput参数。

     

renderFile()是一个执行grunt工作的低级方法   渲染:它提取当前范围内的数据变量   然后运行视图代码。另外两个方法在内部调用它   一,但你几乎不需要自己打电话。如果你   请记住,您需要传入文件路径(而不是视图)   路径)。

参考:Yii difference between rendering functions