Laravel(4)正在编码Redirect :: action()查询参数

时间:2014-10-03 20:27:49

标签: php laravel-4

我的VM上没有本地问题,但在我的开发服务器上,查询被错误编码。在我的一个控制器中,我有一个重定向:

return Redirect::action('CustomerController@index', array('search'=>$term));

在本地,它正确解析为:example.com/customer?search=Smith

在开发服务器上,它正在解析为:example.com/customer?search%3dSmith

我已经尝试深入研究重定向类,并发现toRoute()在哪里有一个替换“不编码”字符串的列表:

protected function toRoute($route, array $parameters, $absolute)
{
    $domain = $this->getRouteDomain($route, $parameters);

    $uri = strtr(rawurlencode($this->trimUrl(
        $root = $this->replaceRoot($route, $domain, $parameters),
        $this->replaceRouteParameters($route->uri(), $parameters)
    )), $this->dontEncode).$this->getRouteQueryString($parameters);
    return $absolute ? $uri : '/'.ltrim(str_replace($root, '', $uri), '/');
}

protected $dontEncode = array(
    '%2F' => '/',
    '%40' => '@',
    '%3A' => ':',
    '%3B' => ';',
    '%2C' => ',',
    '%3D' => '=',
    '%2B' => '+',
    '%21' => '!',
    '%2A' => '*',
    '%7C' => '|',
); 

但我相信这不适用于getRouteQueryString($ parameters)中url的第二部分;但话说回来,这部分只使用http_build_query而不是rawurlencode的一部分。所以我不知道为什么我传递给路线动作的数组得到'='编码。

0 个答案:

没有答案