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