2012-04-22 3 views
1

Я использую класс seourlmanager в urlmanager.
Существует поле с автозаполнением ajax, которое использует Multicomplete Extension.
Расширение отправляет запрос ajax, например, 'controller/action? Term = searchterm'.
Проблема в том, что менеджер URL (seourlmanager) не может иметь дело с запросом get.
В менеджере URL-адрес у меня есть правило:Yii urlManager и jquery ajax GET запрос

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

Как настроить менеджер URL-адрес, чтобы работать как с 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 не должен быть определен в правиле:

/controller/action?term=searchterm - CORRECT 

/controller/action/term - INCORRECT 
+0

Это не поможет. У меня все еще есть 301error – lvil

+0

У вас есть .html набор суффиксов (''urlSuffix' => '.html'')? Если это так, url должен также использовать суффикс. Попробуйте ввести URL-адрес прямо в своем браузере, чтобы узнать, какая комбинация дает правильный ответ. –

+0

нет, у меня нет набора urlSuffix в файле конфигурации. – lvil

Смежные вопросы