小编Ada*_*mos的帖子

Magento - 处理块中表单的最佳方法?

我来自不同的MVC框架(例如Symfony)到Magento.我读了很多关于Magento最佳实践的内容,我可以看到Magento没有使用典型的MVC风格.Alan Storm写道如下:

控制器的责任不是为视图设置变量控制器的工作就是对模型执行某些操作,然后告诉系统它的布局渲染时间.

我想我理解这种方法,因为这可以为块提供一种灵活性.

对.但形式怎么样?

在典型的MVC框架中,您将获得控制器中的请求参数,验证控制器中的表单数据,进行模型操作(保存,加载等)或必要时重定向,当一切都干净整洁时,您将提供新鲜出炉的视图输出件.

在Magento中,这些都应该发生在一个块内,而(瘦)控制器只应该准备布局然后再渲染它.(如果我理解的话.)

我试图找到一篇文章(手册,论坛主题,任何内容),它描述了一个单独模块的创建步骤,该模块具有自己的新模型,可以通过用户在前端的表单进行编辑.我想看看自定义表单应该如何在前端工作.我发现只有关于块,表单,修改或创建adminhtml表单或自定义联系人或简报注册表单的一般文章.

我做到了.它现在有效,但我不满意.那么,我检查了核心模块中Contact表单的源代码,这些对我来说搞乱了整个图片.内置的Contact表单使用IndexController进行上述大多数操作,(几乎)就像标准的MVC一样.

任何人都可以向我建议一个最佳实践,如何管理如下的简单流程?(我在下面有这些解决方案,但我不确定,是"正确的Magento方式"):

  • 页面加载时,在块中显示一个表单,该表单包含在单独的页面中
  • 通过请求参数从DB加载模型对象
  • 将对象数据填充到表单中
  • 当用户提交表单时,处理表单数据,验证它们
  • 如果验证错误,请再次显示该表单,然后弹出错误消息
  • 如果确定,将数据存储到数据库中,显示一个感谢页面

我的困惑主要在于:

  • 我应该在哪里获取并管理请求参数?(我在块类文件中做过)
  • 并根据它从DB加载一个对象?(另外,然后传递给phtml)
  • 如果我不加载它,如何将它传递给视图?(我知道一种方法,但我不知道最好的方法.)
  • 应该在哪里处理,验证和存储(POST)表单数据?(块?)
  • 如何在块中正确使用重定向?我是否需要重定向,因为感谢页面应该是不同的块/页面?或者只是同一块的替代(条件)外观?

forms model-view-controller controller block magento

7
推荐指数
1
解决办法
1256
查看次数