Php Symfony 2:抽象数据输入以允许多个控制器、一个模型

Php Symfony 2:抽象数据输入以允许多个控制器、一个模型,php,symfony,Php,Symfony,我目前正在努力寻找一个合适的系统架构,但我想我需要Symfony专家的帮助。我正在构建一个非常简单的应用程序,它有两个接口:普通的web应用程序HTML表单等,以及一个RESTful API。这两者并不相同,但它们共享许多CRUD操作 我有两个包,每个包包含特定于每个接口的控制器。一个使用表单组件创建和验证表单,另一个只解析请求中以JSON或XML发送的任何格式的数据。然而,这很糟糕。这两个接口之间有很多共享代码,比如参数绑定和验证。虽然模型是相同的,但我从用户那里接收数据并与模型交互的方式是完

我目前正在努力寻找一个合适的系统架构,但我想我需要Symfony专家的帮助。我正在构建一个非常简单的应用程序,它有两个接口:普通的web应用程序HTML表单等,以及一个RESTful API。这两者并不相同,但它们共享许多CRUD操作

我有两个包,每个包包含特定于每个接口的控制器。一个使用表单组件创建和验证表单,另一个只解析请求中以JSON或XML发送的任何格式的数据。然而,这很糟糕。这两个接口之间有很多共享代码,比如参数绑定和验证。虽然模型是相同的,但我从用户那里接收数据并与模型交互的方式是完全不可靠的


有没有一种方法可以将输入绑定和验证合并到一个抽象的操作中?我首先创建一个类,该类从每个控制器接收请求对象,验证每个参数并与模型通信。它对API非常有效,但我完全失去了表单组件的优势。

您可以尝试为每个操作使用两个不同的路由,但要使用相同的实际操作

blah_blah.blahbadeblah:
    pattern: /blah/
    defaults:
        _controller: "BlahBlahBundle:Blah:index"
        json: false

blah_blah.blahbadeblah_json:
    pattern: /json/blah/
    defaults:
        _controller: "BlahBlahBundle:Blah:index"
        json: true

然后,您可以在控制器的末尾检查json,然后使用完整模板或包含最少内容的JsonResponse进行响应。

我已经在这样做了。我不是在讨论web控制器和API控制器的I/O差异,而是如何在它们的操作中抽象出与模型交互数据绑定、数据验证等相关的重复代码。实际控制器的内容是什么?对于web控制器:实体的实例化、表单生成器、,API控制器的表单验证实体管理器persiting等:输入验证、实体实例化、实体管理器持久化等。您是否可以编辑您的问题并将实际代码放入其中。。那就更有意义了。我可能帮不上忙,但至少那时我能理解。