有没有理由不允许从所有局部视图访问所有数据?

时间:2011-04-05 15:01:35

标签: php oop model-view-controller

是的。这个问题出现在Code Igniter上,但由于事实上每个MVC php网络应用程序都能在这方面遇到问题,因此它与代码点火器无关。

将MVC视为应用程序设计,让我们假设view分为partial views。默认情况下,partial views有自己的数据view有自己的数据。现在我想知道:有没有理由不允许partial views访问view的数据?

4 个答案:

答案 0 :(得分:2)

部分视图是为了简化在前端开发单个模块或组件的过程,不应该要求所有全局参数。

对于代码可用性和一点点带宽,最好将要发送的参数分开

如果你真的希望传递所有参数,那么只需选择另一个视图模板而不是部分参数。

答案 1 :(得分:1)

一般来说,最好只将数据提供给需要正确渲染的View(或者,在本例中为Partial View)。

这迫使开发人员在修改任何组件之前稍微思考一下,并防止视图/部分视图之间的职责混合。这也增强了可重用性,因为您不会冒部分视图需要访问在使用部分视图时可能不会出现的数据的风​​险。

答案 2 :(得分:1)

我不是OOP上帝,但是我使用了装饰模式来构建视图(我自己滚动,因为我不喜欢codeigniter / zend中的模板等)。

在构建页面方面,(在我看来)部分视图能够与父级通信是必不可少的 - 如果局部视图的一个组件需要一些外部资源(如特定的javascript文件),它应该能够告诉布局将其包含在页面的head部分中,而无需访问自己进行更改。

所以我认为部分视图不应该有权访问视图,但必须与它进行通信,否则你构建的是对该视图的部分依赖,这可能会阻止其中一个或两个被利用。

答案 3 :(得分:0)

Ruby on Rails - 默认答案是否定的。部分可以被视为相应视图的子节点。

如果你做一些异步数据编辑可能会有一些问题 - vodoo。

其他那样保持简单和愚蠢..视图的部分知道视图知道什么......