是否可以通过查询字符串参数将请求路由到控制器/操作? 以及如何使用routing.yml文件?
我的意思是:
/some/path?do=action1...
some_route:
url: /some/path
param: { module: module1, action: action1 }
requirements:
do: action1 <--- ???
/some/path?do=action2
some_route2
url: /some/path
param: { module: module1, action: action2 }
requirements:
do: action2 <--- ???
或一些常见的路线:
some_route:
url: /some/path?do=:action
param: { module: module1, action: action }
requirements:
do: action\d+
谢谢!
答案 0 :(得分:1)
是的,可以通过在routing.yml
:
generic_rule:
url: /some/path/:action
param: {module: yourmodule}
在这种情况下,当您致电/some/path/index
时,将调用indexAction
yourmodule
方法。
您甚至可以创建更通用的规则,其中action
和module
都是变量:
more_generic_rule:
url: /some/path/:module/:action
查看doc了解详情。
答案 1 :(得分:0)
您可以执行一项操作,检查do
参数并转发您正确的操作,例如
main_action:
url: /some/path/:do
param: { module: yourmodule, action: mainAction }
requirements:
do: action\d+
然后在yourmodule/actions/actions.class.php
:
public function executeMainAction(sfWebRequest $request)
{
$do = $request->getParameter('do');
if (doParameterIsOk($do)) {
$this->forward('yourmodule', $do);
} else {
// Handle bad `do` parameter.
}
}