Php Symfony-默认路由。自动映射/{controller/{action}
我正在尝试将我的url自动映射到控制器 example.com/test | MyBundle:Default:Index example.com/test/login | MyBundle:默认值:login 这是我的方法,但它还不起作用。 问题是,操作应该是可选的,如果没有提供,应该默认为“Index” app/config/routing.phpPhp Symfony-默认路由。自动映射/{controller/{action},php,symfony,Php,Symfony,我正在尝试将我的url自动映射到控制器 example.com/test | MyBundle:Default:Index example.com/test/login | MyBundle:默认值:login 这是我的方法,但它还不起作用。 问题是,操作应该是可选的,如果没有提供,应该默认为“Index” app/config/routing.php use Symfony\Component\Routing\RouteCollection; use Symfony\Component\Rou
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')
)
);
非常感谢您的帮助!Symfony在其工作流中使用了请求对象中名为“\u controller”的属性。在某一点上,该属性填充了如下内容
- MyBundle:默认值:索引或
- 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}'));
然后可以调用,它正确解析并执行控制器
但请确保不要在生产环境中使用此选项,因为这确实是一种不好的做法。首先:URL很难看,不能自我解释。其次,在生成路由时,您始终需要添加_controller作为参数。如果您更改捆绑包、控制器或方法的名称,则必须搜索所有发生的错误如果你错过了一个,你的代码肯定会崩溃,而你自己却不知道。开始使用symfony来尝试一些东西,这是可以的,但除此之外,没有其他的。