class 之上的 Symfony 2.7 路由

Symfony 2.7 Route on top of class

想请教一下symfony中的路由问题。我知道我们可以将路线放在动作之上,但我看到了将路线放在 class 之上的方法。我想知道这是什么意思?因为当我将路线放在 class 之上时,我收到页面未找到错误。

    <?php

namespace AppBundle\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;

/**
 * Class DefaultController
 * @package AppBundle\Controller
 * @Route('/Test')
 */
class DefaultController extends Controller
{
    /**
     * @Route("/", name="homepage")
     * @Template()
     */
    public function indexAction(Request $request)
    {

        // replace this example code with whatever you need
        return $this->render('default/index.html.twig', array(
            'base_dir' => realpath($this->container->getParameter('kernel.root_dir').'/..'),
        ));

    }
}

提前致谢。

注释 @Route 可以在方法和 类 中使用。

控制器应始终包装与同一主题相关的方法,例如 CartController。在这个控制器中,您将拥有与 Cart 相关的方法,因此您应该能够为所有这些方法定义某种前缀。

所以,如果你有 @Route("/cart"),用那个注解定义的每个方法的路由都会附加到这个前缀 /cart。请记住,附加并不意味着覆盖。

应该可以。

您的"Page not found"留言与此注释无关:)

更新

检查您的路线是否正在加载的一些步骤。

  • Symfony 为您带来了路由器调试器。它列出了您项目中所有已找到和可用的路线。从项目的根开始,php app/console debug:route。对于 Symfony 3.*,php bin/console debug:router 和非常旧的 Symfony 版本... php app/console router:debug.
  • 如果路线不存在,请确保正在加载您的路线。您需要向框架指定您的控制器需要解析才能找到 @Route 注释 :)

查看如何通过多种方式从注解加载路由here

简单的方法是...

app:
    resource: "@AppBundle/Controller"
    type:     annotation