Symfony2:获取RESTful网址的最简单方法

sto*_*fln 6 rest routing symfony

目前我有通常的Controller/Action结构:

BlogController:

/blog/list  
/blog/create  
/blog/detail/my-blog-hash
Run Code Online (Sandbox Code Playgroud)

和PostController

/post/create  
/post/detail/my-post-hash
Run Code Online (Sandbox Code Playgroud)

我想要的是博客帖子详细信息视图的URL:

/blog/detail/my-blog-hash/post/my-post-hash
Run Code Online (Sandbox Code Playgroud)

我知道有一个RESTBundle,但是这让IMO过于复杂,并且路由和表单验证存在一些我无法解决的真正问题(即使在IRC的帮助下).我不需要JSON,序列化器,特殊视图等的访问点,我只需要一种方法来以某种方式堆栈控制器.

有人可以帮我弄这个吗?

abr*_*ham 8

这不能回答您的具体问题,但我想推荐一个更加RESTful的更清晰的URL设计.

通常,博客与/blogs基础资源交互.

POST /blogs 创建一个博客.

GET /blogs 列出所有博客.

要使用特定博客,请指定哪个博客.

GET /blogs/:id 获取特定博客的详细信息.

现在具体说明您要与之交互的博客子资源.

POST /blogs/:id/posts 创建一个新帖子.

GET /blogs/:id/posts/:id 获取特定博客的特定帖子的详细信息.


sto*_*fln 0

我安装了RestBundle,玩了几个小时后我又删除了它,因为路线不灵活(至少我没有找到如何相应地设置路线)。

之后,我就像在普通控制器中一样设置路线。所以我添加了这样的路由注释:

// BlogController
@ORM\Route("blogs/{blogHash}", name="blog_detail")
public function detailAction(Blog $blog)
Run Code Online (Sandbox Code Playgroud)

和:

// PostController
@ORM\Route("blogs/{blogHash}/post/{postHash}", name="blog_post_detail")
public function detailAction($blogHash, $postHash)
Run Code Online (Sandbox Code Playgroud)

重要提示:在路由配置中,您必须在 BlogController 之前包含 PostController