2012-02-06 40 views
0

我在网站的页眉部分有一个登录表单。如果用户登录,登录表单将显示用户个人资料的详细信息。问题是如何将页眉页脚和内容分离到不同的视图并从一个控制器调用它们?或者,也许有另一种解决方案...感谢您的帮助。yii中单独的页眉,内容和页脚

回答

3

在你的标题视图中,你可以写这样的东西。

<?php if(Yii::app()->user->getId()): ?> 
    <?php $this->renderPartial('//world/_header_user')); ?> 
<?php else: ?> 
    <?php $this->renderPartial('//world/_header_guest')); ?> 
<?php endif; ?> 
1

最简单的方法可能是使用不同的布局,您只需切换登录。如果不是,则显示基于Yii :: app() - > user-> isGuest的partials/components也适用。

0

您默认生成的Yii应用程序在protected/components/Controller.php中有一个父控制器。 如果您需要访问布局中的其他参数,请将公共属性添加到控制器,将它们设置在您的子控制器中,然后在视图/布局文件中使用它们。

2

使用模型 - 视图 - 控制器(MVC)设计模式,基于Yii的站点的外观自然由View文件控制。这些文件是HTML和PHP的组合,有助于创建所需的输出。网站中的特定页面将使用特定的查看文件。事实上,View文件被设计为相当自然的分解,例如,用于创建和编辑员工记录的表单是它自己的文件,并且该文件可以被create.php和update .PHP。与OOP中的大多数事情一样,实现原子的解耦功能对提高可重用性有很大的帮助。但是单个View文件只是渲染网页的一部分。单个视图文件在布局文件中呈现。尽管我在Yii的着作中提到了一两次布局,但这是一个值得自己发表的主题。

要清楚,布局是一种View文件。具体来说,虽然其他View文件被放置在相应Controller的目录中(即SiteController从视图/站点拉出),但是布局文件会进入视图/布局中。但是,当其他视图文件与单独的控制器(因此,单个页面)相关联时,布局是共有的,由所有页面共享。简而言之,布局文件是整个网站模板系统的父包装器。我将解释

YPU可以看到更多的细节

http://www.larryullman.com/2012/05/16/working-with-layouts-in-yii

相关问题