Symfony Routing没有意义

时间:2016-05-12 21:10:08

标签: php symfony

我自己教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作为我的主要操作,即用户登录后网站打开时的操作。谢谢

2 个答案:

答案 0 :(得分:0)

您的路线规范需要{id}参数,这是必须的,因此确实没有"GET /post/"路线。您需要执行以下操作之一

  1. 传递id值并访问/post/1例如
  2. 从路线规范中删除{id},然后您就可以访问/post/
  3. 传递id的默认值,以便您同时访问/post//post/1。为此,您的路线规范应该类似于@Route("post/{id}", name="post_show", defaults={"id" = 1})

答案 1 :(得分:0)

找不到"/post/"的路线正确

因为没有路线"/post/" 在您的示例中,只有"/""/post/{id}"

所以它非常有意义,我更喜欢使用yml表示法和前缀,所以它没有绑定到类

检查" YAML" DOCS

中的标签