我自己教Symfony。路由没有任何意义。
我有一个postController
课,有一些动作。最初来自命令行的crud生成器给了我这个;
/**
* Post controller.
*
* @Route("/post")
*/
class PostController extends Controller
{
/**
* Lists all Post entities.
*
* @Route("/", name="post_index")
* @Method("GET")
*/
public function indexAction()
{
//
}
//
}
我想要实现的是从类本身中删除@Route
。因此,我希望我的indexAction
成为主页,而我班级中的所有其他操作仍然以/post
开头。例如,这就是我想要的;
class PostController extends Controller
{
/**
* Lists all Post entities.
*
* @Route("/", name="homepage")
* @Method("GET")
*/
public function indexAction()
{
//
}
/**
* Finds and displays a Post entity.
*
* @Route("post/{id}", name="post_show")
* @Method("GET")
*/
public function showAction(Post $post)
{
//
}
// what I want for the showAction should count for all other Actions as well
}
当我进行更改时,我收到错误;
未找到" GET / post /"
的路线
有人可以向我解释我做错了什么以及如何解决这个问题。我不认为这是重要的事情,它可能是我不知道的小事。我希望将indexAction
作为我的主要操作,即用户登录后网站打开时的操作。谢谢
答案 0 :(得分:0)
您的路线规范需要{id}
参数,这是必须的,因此确实没有"GET /post/"
路线。您需要执行以下操作之一
id
值并访问/post/1
例如{id}
,然后您就可以访问/post/
id
的默认值,以便您同时访问/post/
和/post/1
。为此,您的路线规范应该类似于@Route("post/{id}", name="post_show", defaults={"id" = 1})
答案 1 :(得分:0)
找不到"/post/"
的路线正确
因为没有路线"/post/"
在您的示例中,只有"/"
和"/post/{id}"
所以它非常有意义,我更喜欢使用yml表示法和前缀,所以它没有绑定到类
检查" YAML" DOCS
中的标签