I am using seourlmanager class in urlmanager.
There is a field with ajax autocomplete that uses Multicomplete Extension.
The extension sends ajax request like 'controller/action?term=searchterm'.
The problem is that url manager (seourlmanager) can't deal with the get query.
In url manager I have this rule:
'controller/action/<term:.*>'=>'controller/action'
How to adjust the url manager to work both with Multicomplete Extension and seourlmanager?
I've changed the seourlmanager class to add query string in the end:
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;
}
Try to add a generic rule in your config file something like this:
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
This would match the typical controller/action
format with or without additional query parameters.
Since the autocomplete extension uses ?term=searchterm
, the ?term
doesn't need to be defined in the rule:
/controller/action?term=searchterm - CORRECT
/controller/action/term - INCORRECT