Ho tre controllore nominato BlogController
, PostController
, CommentController
che CommentController
è sub risorsa PostController
e PostController
risorsa secondaria di 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
mi definiscono getAction
metodi, ma ottengo errore seguente:
[InvalidArgumentException]
Every parent controller must have `get{SINGULAR}Action($id)` method
where {SINGULAR} is a singular form of associated object
Edit:
cerco anche di cambiare la nome del metodo su getCommentAction($commentId)
, getPostAction($postId)
e getBlogAction
, ma non funziona.
Quando si utilizzano le annotazioni @RouteResource
, il nome del metodo deve essere getAction($id)
, altrimenti non funziona.
Quando cambio genitore del router mgh_blog_post_comment
su mgh_blog
, funziona!
Puoi pubblicare l'output del comando 'app/console debug: router'? – giosh94mhz
@ giosh94mhz 'debug: errore' dump errore 'InvalidArgumentException' – ghanbari
Questo è lo stesso errore che si ottiene sul server web. È necessario commentare la rotta incriminata, quindi eseguire il comando. In questo modo, posso vedere quale percorso può interferire (se c'è) – giosh94mhz