我在urlmanager中使用seourlmanager class。
有一个带有 ajax 自动完成的字段使用多完成扩展。
该扩展发送 ajax 请求,如"controller/action?term=searchterm"。
问题是url管理器(seourlmanager)无法处理get查询。
在网址管理器中,我有以下规则:
'controller/action/<term:.*>'=>'controller/action'
如何调整网址管理器以同时与多完成扩展和 seourlmanager 一起使用?
尝试在配置文件中添加一个通用规则,如下所示:
'<controller:'w+>/<action:'w+>' => '<controller>/<action>',
这将匹配具有或不具有其他查询参数的典型controller/action
格式。
由于自动完成扩展使用 ?term=searchterm
,因此不需要在规则中定义?term
:
/controller/action?term=searchterm - CORRECT
/controller/action/term - INCORRECT
我更改了 seourlmanager 类以在最后添加查询字符串:
protected $_query;
public function init() {
..
$this -> _query = (!empty($urlParts['query'])) ? $urlParts['query'] : '';
..
}
protected function _connectUrlParts() {
$scheme = $this -> _scheme . '://';
$port = (!empty($this -> _port)) ? ':' . $this -> _port : '';
if($this->_query=='')
return $scheme . $this -> _host . $port . $this -> _path;
else
return $scheme . $this -> _host . $port . $this -> _path.'?'.$this->_query;
}