|
1
16
是的,你可以。 只要你保持 关注点分离 在M、V和C之间,您可以从视图中自由调用模型(或控制器)。大多数MVC图至少显示了视图和模型之间的双向连接。但你不想做的是 逻辑/代码 从模型(或控制器)进入视图,您不想从视图修改模型。
例如,您的页面上可能有一个小部件,它汇集了您网站每一页上最喜爱的博客的最新十篇博客标题。比如说,你通过打电话得到头条新闻
关于你的其他问题:
在调用任何控制器操作之前,身份验证是您在应用程序流早期要做的事情。因此,你不应该 运行(整个)身份验证系统 在视野中。实际的身份验证不是与视图相关的逻辑。另一方面,只需在身份验证后请求用户状态就可以了。例如,如果您想呈现一个显示用户名的小部件,并提供一个登录/注销按钮,那么可以执行如下操作
如果用户角色要修改图形用户界面的较大部分,您可能希望将视图拆分为部分块,并根据状态将其包括在内,而不是将所有HTML写入视图帮助器。
如果只希望基于用户角色呈现导航,请查看Zend框架的
|
|
|
2
4
你 可以 但是你 不应该 . 除了一些极端情况(根据登录状态分支视图绝对不是“极端情况”)之外,从视图中调用模型资料几乎总是一个坏主意。 在这种情况下,您可能希望通过控制器将布尔值传递给视图。这样,如果更改了用户模型的某些内容,那么只要控制器保持行为不变,视图就不必知道。 |
|
|
3
0
好吧,我真的会尽量保持我的观点逻辑自由。如果需要根据模型方法的结果等切换任何内容,请放置一个代理渲染的控制器。 只要确保你遵循基本的想法:在模型中做你的事情,告诉你的模型从你的控制器做什么,也告诉你的视图从你的控制器显示什么。 |
|
|
4
-1
虽然我对MVC的了解只够让自己陷入困境,但我一直坚持这样一个事实:除非您的视图是严格的用户界面,否则它不应该存在。 此外,我还提出了瘦控制器、胖模型的概念。 除此之外,我建议向您的身份验证系统模型添加一个方法,该方法返回要呈现的适当视图并将其传递给视图。 |