Forms 如何使用REST-API+;网络界面

Forms 如何使用REST-API+;网络界面,forms,rest,symfony,Forms,Rest,Symfony,我正在开发一个Symfony3应用程序,它将有一个web界面,但也有一个移动界面(可能是Ionic)。 到目前为止,我已经使用FOSRestBundle和NelmioApiDocBundle(顺便说一下)创建了一个REST-API,并且我可以使用NelmioApiDocBundle沙箱特性查看/创建/删除实体。 换句话说,我创建了实现CRUD的控制器,但也包括事务和事件处理 现在我还想为其中一些实体提供一个web界面,因此我创建了相应的控制器,并发现自己复制了createForm/submit/

我正在开发一个Symfony3应用程序,它将有一个web界面,但也有一个移动界面(可能是Ionic)。 到目前为止,我已经使用FOSRestBundle和NelmioApiDocBundle(顺便说一下)创建了一个REST-API,并且我可以使用NelmioApiDocBundle沙箱特性查看/创建/删除实体。 换句话说,我创建了实现CRUD的控制器,但也包括事务和事件处理

现在我还想为其中一些实体提供一个web界面,因此我创建了相应的控制器,并发现自己复制了createForm/submit/isValid等。 如果我可以将表单处理(POST)委托给已经处理持久性和逻辑的API控制器,那就太好了,但是我遇到了流沙

有没有人尝试过这样的事情,或者有没有人建议如何应对这种情况? 非常感谢您的回答。
Jorgo

使用
命令
命令总线
模式。有许多很好的Symfony包,例如

因此,可能的方法是:

  • 创建命令(只是像DTO这样的哑对象,带有setter和getter,没有任何行为)
  • 为命令创建处理程序并将逻辑放在那里,依此类推
  • 将该命令用作表单中的模型
  • 将该命令用作RESTAPI中的输入数据模型。只需使用将输入的JSON/XML转换为命令
  • 使用命令总线库实现中的验证中间件对其进行验证(如果使用表单,也可以直接对其进行验证)

  • 改用
    命令
    命令总线
    模式。有许多很好的Symfony包,例如

    因此,可能的方法是:

  • 创建命令(只是像DTO这样的哑对象,带有setter和getter,没有任何行为)
  • 为命令创建处理程序并将逻辑放在那里,依此类推
  • 将该命令用作表单中的模型
  • 将该命令用作RESTAPI中的输入数据模型。只需使用将输入的JSON/XML转换为命令
  • 使用命令总线库实现中的验证中间件对其进行验证(如果使用表单,也可以直接对其进行验证)

  • 哇!谢谢你的快速回答。我会退房的!这是狂热的。我提出了一个问题的解决方案,您不仅给了我这个问题的解决方案,还让我了解了如何创建一个能够提高项目可维护性的基础设施。我仍在努力的是如何使用命令作为表单模型。请求、形式和实体是如何协同工作的?请求主体转换器必须是自定义的。对吗?表单处理发生在哪里?命令具有哪些属性?表单提交如何访问数据?你能给我写几行foo代码来演示怎么做吗?哇!谢谢你的快速回答。我会退房的!这是狂热的。我提出了一个问题的解决方案,您不仅给了我这个问题的解决方案,还让我了解了如何创建一个能够提高项目可维护性的基础设施。我仍在努力的是如何使用命令作为表单模型。请求、形式和实体是如何协同工作的?请求主体转换器必须是自定义的。对吗?表单处理发生在哪里?命令具有哪些属性?表单提交如何访问数据?你能给我写几行foo代码来演示如何进行这项工作吗?