2012-04-22 148 views
1

我在urlmanager中使用seourlmanager类。
有一个字段与ajax自动完成,使用Multicomplete Extension
扩展发送一个像'controller/action?term = searchterm'这样的Ajax请求。
问题是,url管理器(seourlmanager)无法处理get查询。
在网址经理,我有这样的规则:Yii urlManager和jquery ajax GET请求

'controller/action/<term:.*>'=>'controller/action' 

如何调整网址经理Multicomplete扩展和seourlmanager工作两者兼而有之?

回答

0

我已经改变了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; 
} 
0

尝试在您的配置文件中添加一些通用的规则是这样的:

'<controller:\w+>/<action:\w+>' => '<controller>/<action>', 

这将有或没有额外的查询参数典型controller/action格式相匹配。

由于自动完成扩展使用?term=searchterm,该?term不需要在规则中定义:

​​
+0

这没什么帮助。我仍然有301error – lvil 2012-04-22 11:36:23

+0

你有一个.html后缀集(''urlSuffix'=>'.html'')?如果是这样,该网址也应该使用后缀。尝试直接在浏览器中输入网址,查看哪种组合可以为您提供正确的响应。 – 2012-04-22 11:37:56

+0

不,我没有在配置文件中设置urlSuffix。 – lvil 2012-04-22 11:56:38