Yii:使用与控制器布局不同的布局来渲染动作
2022-08-30 18:12:10
在 Yii 中,有没有办法使用与控制器定义的操作不同的操作来呈现单个操作?我有一个操作,我想以与其他操作不同的格式设置,并且从文档中不清楚这是否可能。layout
在 Yii 中,有没有办法使用与控制器定义的操作不同的操作来呈现单个操作?我有一个操作,我想以与其他操作不同的格式设置,并且从文档中不清楚这是否可能。layout
我相信在这个动作上,你可以调用变量。$layout
public function actionYourAction()
{
$this->layout = 'nameOfYourAltLayout';
}
以下链接中的说明表明,您必须为每个操作设置此变量,因为您不能只设置默认的公共变量并期望其他操作默认返回到此变量。
http://www.yiiframework.com/wiki/28/how-to-implement-multiple-page-layouts-in-an-application/
::编辑::
此处的最佳做法似乎是在视图脚本中为调用变量的特定操作定义变量。例如,如果您的操作调用,则 viewscriptone 视图文件将包含:$layout
viewscriptone.php
$this->layout = 'nameOfYourAltLayout';
在此处覆盖比在控制器操作中重写更有意义。但是,正如LDG所说,如果布局是有条件的,则可能应将其保留在控制器中。此信息仍可以在页面“使用布局”部分下的链接中找到。
该wiki条目在描述如何使用布局方面做得很好,绝对值得一读。我确实认为您可以在控制器类的开头设置布局默认值,然后在特定操作函数中覆盖该布局,而不必在每个操作中定义布局,至少它对我有用。您还可以将 beforeAction 功能用于任何复杂情况。而且,您可能已经知道,您可以使用 renderPartial 完全绕过布局。