我在网站的标题部分有一个登录表单。如果用户登录而不是登录表单,则会显示用户配置文件详细信息。问题是如何将页眉页脚和内容分成不同的视图并从一个控制器调用它们?或许还有另一个解决方案......感谢您的帮助。
答案 0 :(得分:3)
在标题视图中,您可以编写类似这样的内容。
<?php if(Yii::app()->user->getId()): ?>
<?php $this->renderPartial('//world/_header_user')); ?>
<?php else: ?>
<?php $this->renderPartial('//world/_header_guest')); ?>
<?php endif; ?>
答案 1 :(得分:2)
使用模型 - 视图 - 控制器(MVC)设计模式,基于Yii的站点的外观自然由View文件控制。这些文件是HTML和PHP的组合,有助于创建所需的输出。站点中的特定页面将使用特定的View文件。事实上,View文件被设计为非常原子地分解,例如,用于创建和编辑员工记录的表单是它自己的文件,create.php和update都可以包含该文件。 .PHP。与OOP中的大多数事情一样,实现原子的,分离的功能对于提高可重用性有很大帮助。但是单个View文件只是渲染网页等式的一部分。单个视图文件在布局文件中呈现。虽然我在Yii的着作中已经提到了一两次布局,但这是一个值得自己发帖的主题。
要清楚,布局是一种View文件。具体来说,虽然其他View文件放在相应Controller的目录中(即SiteController从views / site中提取),但布局文件仍在视图/布局中。但是,当其他View文件与各个控制器(以及单个页面)相关联时,布局是公共的,由所有页面共享。简而言之,布局文件是整个网站模板系统的父包装器。我会解释
ypu可以看到更多细节
http://www.larryullman.com/2012/05/16/working-with-layouts-in-yii
答案 2 :(得分:1)
最简单的方法可能是使用不同的布局,您只需打开登录即可。如果没有,显示基于Yii :: app() - &gt; user-&gt; isGuest的部分/组件也很有效。
答案 3 :(得分:0)
您的默认生成的Yii应用程序在protected / components / Controller.php中有一个父Controller。 如果需要在布局中访问其他参数,请将公共属性添加到Controller,在子控制器中设置它们,并在视图/布局文件中使用它们。