Symfony 1.4 - 按查询字符串参数路由

时间:2014-03-24 14:59:26

标签: php routing symfony-1.4

是否可以通过查询字符串参数将请求路由到控制器/操作? 以及如何使用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+       

谢谢!

2 个答案:

答案 0 :(得分:1)

是的,可以通过在routing.yml

中创建通用规则来实现
generic_rule:
    url: /some/path/:action
    param: {module: yourmodule}

在这种情况下,当您致电/some/path/index时,将调用indexAction yourmodule方法。

您甚至可以创建更通用的规则,其中actionmodule都是变量:

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.
    }
}