Symfony在哪里初始化路线? (routing.yml或isnide控制器)

时间:2016-08-20 18:02:34

标签: php html symfony

在smyfony的routing page上是一个路由示例(第一个)。现在,他们为我们提供了4种代码选项(注释,YAML,XML,PHP)。区别在哪里?也许你可以查看我的Controller + Route

控制器如下所示:

<?php
    namespace AppBundle\Controller;

    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;

    class ToDoListController extends Controller
    {
        /**
         * @Route("/ToDoList", name="ToDoList")
         */

        public function showToDoList()
        {

        }
    }
?>

现在我也将此路线添加到routing.yml

ToDoList:
    path: /Aufgabenliste
    defaults: {_controller: AppBundle\Controller  \ToDoListController::showToDoList}

这是对的吗?关于路径怎么样?在symfony页面的第一个例子中,他们写了defaults: { _controller: AppBundle:Blog:show },但在描述中他们写道:

  

_controller字符串称为逻辑名称。它遵循指向特定PHP类和方法的模式,在本例中为AppBundle \ Controller \ BlogController :: listAction和AppBundle \ Controller \ BlogController :: showAction方法。

1 个答案:

答案 0 :(得分:1)

奥莱特。所以在Symfony中,您可以选择不同的路由方法。你可以这样做,例如通过注释或yml(我以前使用yml,但现在我切换到注释)。唯一的区别在于...格式的文件;)例如,我真的很喜欢使用注释,因为在一个文件中没有十亿个条目,我的每条路径都在它所导致的代码旁边。在这一点上,它取决于你更喜欢什么。但是我认为使用注释是一种很好的做法。

<?php
    namespace AppBundle\Controller;

    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;

    class ToDoListController extends Controller
    {
        /**
         * @Route("/ToDoList", name="ToDoList")
         */
         public function showToDoList()
         {

         }
    }  
?>

上面的代码没问题 - 您使用了必需的命名空间并创建了正确的注释。所有这一切都必须在你正在进行的捆绑中进行。你还得去app / config / routing.yml,并把它放在这样的东西:

YourBundleName:
    resource: "@YouBundle/Controller/"
    type:     annotation

当然这只是一个例子 - 您需要根据自己的需要进行调整。这样你就可以对Symfony说你想要使用注释。