Каждый родительский контроллер должен иметь метод `get {SINGULAR} Action ($ id)`, когда у меня есть многоуровневый субресурс в FOS Rest Bundle
У меня есть три контроллера по имениBlogController
, PostController
, CommentController
тотCommentController
это подресурсPostController
а такжеPostController
подресурсBlogController
.
/**
* @Rest\RouteResource("blog", pluralize=false)
*/
class BlogController extends FOSRestController
{
public function getAction($blogUri)
{
...
}
}
/**
* @Rest\RouteResource("post", pluralize=false)
*/
class PostController extends FOSRestController
{
public function getAction($postId)
{
...
}
}
/**
* @Rest\RouteResource("comment", pluralize=false)
*/
class CommentController extends FOSRestController
{
public function getAction($commentId)
{
...
}
}
routing.yml
mgh_blog:
resource: MGH\BlogBundle\Controller\BlogController
type: rest
mgh_blog_post:
resource: MGH\BlogBundle\Controller\PostController
type: rest
parent: mgh_blog
mgh_blog_post_comment:
resource: MGH\PostBundle\Controller\CommentController
type: rest
parent: mgh_blog_post
Я определяюgetAction
методы, но я получаю следующую ошибку:
[InvalidArgumentException]
Every parent controller must have `get{SINGULAR}Action($id)` method
where {SINGULAR} is a singular form of associated object
Редактировать:
Я также пытаюсь изменить имя метода наgetCommentAction($commentId)
, getPostAction($postId)
а такжеgetBlogAction
, но это не работа.
Когда я использую@RouteResource
аннотации, имя метода должно бытьgetAction($id)
иначе это не сработает.
Когда я меняю родителяmgh_blog_post_comment
маршрутизатор кmgh_blog
, работает!