我正在试图为一个系统找到一个像样的架构,但我想我需要Symfony专家的一些帮助。我正在使用两个接口构建一个非常简单的应用程序:普通的Web应用程序(HTML表单等)和RESTful API。两者不一样,但它们共享很多CRUD操作。
我有两个Bundle,每个Bundle包含特定于每个接口的控制器。一个使用Form组件创建和验证表单,另一个只是以Request发送的任何格式(JSON或XML)解析Request中的数据。但是,这很糟糕。这两个接口之间有很多共享代码,例如参数绑定和验证。虽然模型是相同的,但我从用户接收数据并与模型交互的方式是纯粹的反DRY。
有没有办法将输入绑定和验证带入一个抽象的操作?我首先创建了一个从每个控制器接收到Request对象的类,验证了每个参数并与模型进行了通信。它适用于API,但我完全失去了Form组件的优势。
答案 0 :(得分:0)
您可以尝试为每个操作使用2个不同的路线,但要进行相同的实际操作
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进行响应。