0

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

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

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

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

应用程序/配置/路由.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')
        )
);

任何帮助表示赞赏!

4

1 回答 1

1

Symfony 在其工作流程中使用 Request-Object 中称为“_controller”的属性。在某一点上,该属性充满了类似的东西

  • MyBundle:Default:Index 或
  • project.bundle.controller:method(如果您将控制器注册为服务)

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

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,它会正确解析并执行控制器。

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

于 2013-06-07T10:07:31.147 回答