我忙于使用Kohana MVC框架在PHP中构建MVC应用程序,它工作得很好。但是我想解决一些小问题。提高MVC使用率
很多逻辑在控制器和控制器本身的动作之间重复。我一直在想它,我认为定义一个包含这个共享逻辑的对象是明智的,所以它不会重复。
然后我听说了一些播客和Preventing mission creep in your Views, or, ignorance is bliss的视图模型。所以视图模型就是我一直在寻找的东西。
但现在问题来了,你在视图模型中放了什么。我的想法是让视图模型收集相应视图所需的所有信息。这具有以下优点:每个控制器/操作只需将输入数据传递给视图模型,然后将其传递给视图。
这是一个聪明的主意吗?在测试行为上,将模型传递给视图模型是明智的,因此可以嘲笑它。但我没有真正使用模型。相反,我让控制器通过Doctrine ORM访问数据库。将每个查询翻译为单独的方法似乎有点尴尬,但也许我错过了一些东西。
从我听说过的视图模型来看,它们只是普通的DTO。但是,在动态弱类型语言中,这有什么优势呢?
也许我完全错误的轨道,应该做的不同。你对此有何想法?
编辑:
大多数我说的是收集正确的信息,并把它传递给正确的观点的逻辑。
举例:
我有一个客户控制器。这些有两个操作:添加和编辑。对于这两项行动,我使用相同的观点。在这两个操作中,都分配了相同的视图变量。在添加动作中,当表单无效时,输入变量会再次传递给视图。在编辑操作中,现有的值传递给低谷。这是我想要解决的一个大的重复。
添加了一个示例。 – Ikke 2009-12-23 10:10:48
对不起,我不明白添加和编辑之间的重复,听起来不像代码是完全一样的 – djna 2009-12-23 15:34:03