脚本宝典收集整理的这篇文章主要介绍了php – Symfony2表单组件 – 违反MVC和SRP?,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我来了这篇文章here,我发现我同意作者的看法.即使文章是Symfony 1.x,我认为它仍然适用于Symfony2中的Form组件.它似乎像表单组件试图解决属于模板,控制器和模型的问题,在一个地方.这不会严重违反MVC和/或SRP(单一责任原则)吗?
这可能是一个不同的问题,但我觉得这是一种相关的 – 我也注意到,symfony的许多可用捆绑包试图解决视图外的视图问题,例如:
KnpMenubundle – 在服务器端使用Oo界面生成菜单(为什么不在它们所属的视图层中?)
IvoryCKEdITorBundle – 将textarea转换为ckeditor是在视图文件中的一个jquery行中完成的,为什么这个包存在?我甚至不想计算那里的行数.
那么似乎在Symfony核心的地方有这些侵权行为,还是我没有得到它?
例如,考虑形式与MVC不同层次的关系:
模型:
> Forms复制您的域模型(DM)的信息结构.如果您更改此结构(例如,通过向数据结构添加字段或通过向过程添加参数),还必须调整表单以输入该信息.
>他们需要DM的类型信息,将输入转换为所需的类型.
>他们需要知道DM中指定的约束来验证输入.
他们理想地直接从DM读取数据(例如通过读取/写入数据结构的字段,或通过使用提交的值作为参数调用DM中的过程).
控制器:
>表单接收提交的数据并发送给DM.
>他们根据是否成功验证来改变程序流程.
视图:
>表单渲染为HTML标签和属性的复杂结构,这取决于所有上述内容(应该是字段,需要显示错误?如何排序字段?下拉列表中提供哪些选项等)
因此,不可能编写不接触所有这些层的表单抽象机制.相反,解决方案是根据MVC将表单库本身组织成不同的层次和满足SRP的子组件.如果您查看Symfony2表单组件,它的效果非常好.
以上是脚本宝典为你收集整理的php – Symfony2表单组件 – 违反MVC和SRP?全部内容,希望文章能够帮你解决php – Symfony2表单组件 – 违反MVC和SRP?所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。