Symfony - 默认路由。自动映射/ {controller / {action}

时间:2013-06-07 08:46:55

标签: php symfony

我正在尝试将我的网址自动映射到控制器。

  

example.com/test | MyBundle:默认:索引

     

example.com/test/login | MyBundle:默认值:登录

这是我的方法但它尚未奏效。 问题是该操作应该是可选的,如果没有提供,则默认为“索引”。

应用/配置/ routing.php     

use Symfony\Component\Routing\RouteCollection;
use Symfony\Component\Routing\Route;

// load route collection object
$collection = new RouteCollection();

// add default route
$collection->add('default', new Route('/{_controller}/{_action}', array(
    '_controller' => 'MyBundle:Default:Index',
        ), array('_method' => 'GET')
        )
);

感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

Symfony在其工作流程中使用Request-Object中名为“_controller”的属性。在某个时刻,该属性填充了类似

的内容
  • MyBundle:默认:索引或
  • project.bundle.controller:方法(如果您将控制器注册为服务)

您还可以将此属性用作路线中的参数:

use Symfony\Component\Routing\RouteCollection;
use Symfony\Component\Routing\Route;

// load route collection object
$collection = new RouteCollection();

// add default route
$collection->add('default', new Route('/{_controller}'));

然后你可以调用http://example.com/MyBundle:Default:Index,它正确地解析并执行控制器。

但请确保,不要在生产环境中使用它,因为这实际上是不好的做法。