我对Yii和主题有一个奇怪的问题。我在config / main.php中设置它,如:
'theme'=>'themeName',
像往常一样。但是当我尝试渲染视图时,它会按原样渲染,没有任何布局,就好像我调用了一样:
$this->renderPartial
我仔细检查我没有调用renderPartial,主题似乎与我所做的所有其他主题相同。这个问题可以是什么?
感谢任何帮助,我对此不以为然......
答案 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工作的低级方法 渲染:它提取当前范围内的数据变量 然后运行视图代码。另外两个方法在内部调用它 一,但你几乎不需要自己打电话。如果你 请记住,您需要传入文件路径(而不是视图) 路径)。