Routing 如何在Symfony中传递URL中的正常参数?

Routing 如何在Symfony中传递URL中的正常参数?,routing,symfony1,query-string,symfony-1.4,Routing,Symfony1,Query String,Symfony 1.4,我试图通过普通的查询字符串传递参数,例如: /user/login?foo=bar&abc=123 不幸的是,sfRoute实例中的任何数据似乎都不包含参数foo或abc的数据。我该如何解决这个问题 编辑:以下是我根据Tom的要求使用的代码: /apps/api/config/routing.yml: login: url: /user/login param: { module: user, action: login } /apps/api/modules/user/

我试图通过普通的查询字符串传递参数,例如:

/user/login?foo=bar&abc=123
不幸的是,
sfRoute
实例中的任何数据似乎都不包含参数
foo
abc
的数据。我该如何解决这个问题

编辑:以下是我根据Tom的要求使用的代码:

/apps/api/config/routing.yml:

login:
  url:   /user/login
  param: { module: user, action: login }
/apps/api/modules/user/actions/actions.class.php:

class userActions extends sfActions {
    public function executeLogin(sfWebRequest $request) {
        echo '<pre>'.print_r($this->getRoute(), true).'</pre>';
    }
}
类userActions扩展了sfActions{
公共函数executeLogin(sfWebRequest$request){
回显“”。打印($this->getRoute(),true)。“”;
$request->getParameter('foo')
} }

就这样。当我用URL“/user/login?foo=bar&abc=123”在查询字符串中传递它们时,输出显示
$this->getRoute()
不包含有关
foo
abc
的信息。

访问变量时,使用$request对象,而不是sfRoute:

public function executeSomeAction($request)  {  }
请确保接收这些请求参数的操作中的函数将其声明为传入变量:

$params_typed = $request->getParameterHolder();  // ... and grab them from here
如果您正在Symfony中寻找与之相当的
$\u SERVER['QUERY\u STRING']
,我还没有找到它,我自己也会感兴趣

更新:

我认为你使用的方法只能打印路线。我认为要实现这一点,您需要做的是通过$request对象访问它们,正如我前面提到的。例如:

login:
  url:   /user/login
  param: { module: user, action: login, foo: something, abc: something }
。。。或者使用服务器查询字符串,或者单独处理传入的参数

对不起,我帮不上什么忙了

第二次更新:

实际上,我刚刚测试了一个小想法:

如果在routing.yml中定义参数,如下所示:

$full_path = sfContext::getInstance()->getRouting()->getCurrentInternalUri();
您可以通过以下方式访问它们:

routing:
  class: sfPatternRouting
  param:
    extra_parameters_as_query_string: true
你需要我想:


请注意,如果要使用“extra_parameters_as_query_string:true”参数,则必须删除路线的最后一颗星:


但是我正在尝试使用sfDoctrineRoute中的参数,当我在查询字符串中使用这些参数时,它不接受我的参数。您的路由规则在routing.yml中有这些参数吗?url:/user/login/:foo/:abc….?不,我不希望它们成为目录结构的一部分,我希望能够在url栏中键入:/user/login?foo=bar&abc=123我明白了。。。然后,将它们从路由规则中删除,只需将您所拥有的内容放入其中,包括用于输入的内容。我唯一能想到的另一件事是,您正在使用一些非标准的方式将它们附加到路径。我记得遇到过几个案子。您可以粘贴一个示例,说明如何在代码中添加这些参数吗?或者我应该澄清一下:在URL栏中键入这些参数应该可以不做任何调整,并且应该使参数可用于您请求的操作。你还想和那些情人做些什么吗?马特。。。又添加了一个更新。
default:
  url:   /:module/:action