是否应该从Controller中修改占位符?

问题描述

| 假设我有一个简单的网站,用户可以登录。当他们登录时,我想向他们显示与非(访客)用户不同的消息。该消息应通过将其附加到占位符中来呈现。 应该在哪里做?我当时想让控制器检查用户是否已登录,然后通过“ 0”附加到占位符

解决方法

为什么不将其放置在布局本身中呢? 例如,经常有以下情况影响我的布局:如果用户已登录,则要显示其用户名,查看/编辑其个人资料的链接以及注销的链接。如果他尚未登录,那么我将向他显示一个登录链接和一个注册链接。 处理所有这些的代码使用
Zend_Auth::hasIdentity()
Zend_Auth::getIdentity()
url()
视图帮助器。为了使布局代码更简洁一些,我经常将所有这些内容推送到我自己的名为
authLinks()
的视图助手中。,更好的解决方案可能是根据当前用户的身份验证状态切换布局。这可以通过preDispatch中的插件或控制器中的preDispatch中的插件来完成。通过将显示逻辑放在视图层中,如果您决定更改消息或一起删除消息,则不必更新较低级别的代码。 我个人选择将其放在控制器插件中,因为它抽象了检查身份验证状态和更新视图而不是控制器的问题,并且使您不必担心将来在您创建的任何控制器中放置适当的代码。,这是个人喜好问题。我总是将这种责任委托给视图,因此在我看来,应该由视图来处理。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...