2

如果我像往常一样进行重定向:

$this->redirect('@mypage?apple=1&banana=2&orange=3');

... Symfony 生成正确的 URL:

/something/something?apple=1&banana=2&orange=3

但是,由于某些奇怪的原因,以下内容被转义:

$string = 'apple=1&banana=2&orange=3';
$this->redirect('@mypage?'.$string);

...并生成以下 URL:

/something/something?apple=1&banana=2&orange=3

有没有办法避免这种转义并使与符号正确显示在 URL 中?我已经尝试了我能想到的一切,这让我发疯。我需要这个来解决我从数据库中将保存的查询作为字符串提取并且只想将其锁定到 URL 的情况。我知道我可以从字符串生成一个数组,然后从该数组生成一个全新的 URL,但由于这种愚蠢的转义,它看起来像是很多开销。

谢谢。

4

2 回答 2

1

&当您说“正确显示”时,您可能会错过 URL中变量分隔符的“正确”表示这一事实&- 对于格式正确的 X(HT)ML,&必须编码为&

也就是说,您的脚本中的行为是不寻常的,因为您希望两个示例中的行为相同。我猜这些不是您的路由规则的特定于路由的参数,尽管我希望 symfony 默认会像这样削减您的变量:

/something/something/apple/1/banana/2/orange/3

这不是一些奇怪的 PHP 设置会干扰您的字符串,是吗?

编辑:我已经用 symfony 1.3.3 对其进行了测试,它按照我的建议削减了变量。我倾向于认为这是导致它的 PHP/Apache 设置。检查 php.ini 文件中的 arg_separator.output 设置。

于 2010-04-06T20:15:59.883 回答
1

我相信这是你最好的选择。

$url = $this->getController()->genUrl('search/list');
$this->redirect($url.'?q='.$q.'&g='.$g);

这对我来说很好(& 没有转义到 &)

于 2010-05-29T11:56:54.917 回答