Как настроить Yii's UrlManager для контроллера OpenSearch - PullRequest
1 голос
/ 07 марта 2011

Я пытаюсь добавить функциональность OpenSearch в мое приложение Yii, и у меня возникают проблемы при настройке UrlManager для направления поискового запроса на нужный контроллер (в данном случае это называется query ) и метод (называемый index).).Поиск отлично работает, если в поисковых словах нет пробелов.Всякий раз, когда кто-то ищет более одного слова, UrlManager не может найти контроллер и метод для обработки поиска.

URL-адрес в файле search.xml, который запускает поиск, выглядит следующим образом:

<Url type="text/html" template="[pathToMyApp]/application/index.php/query/{searchTerms}"/>

И мой UrlManager настроен так:

'urlManager' => array(
  'urlFormat' => 'path',
  'rules' => array(
     '<_c:(name|tag)>s/*' => '<_c>/index',
     '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
     'query/suggest/<needle:\w+>'=>'query/suggest',  // used to route OpenSearch JSON suggestions - works
     'query/findbox'=>'query/findbox',  // routes search queries from a form in the application - works
     'query/<needle:\w+>'=>'query/index', // works only for search strings with no white space
  ),
  'showScriptName' => true,
),

1 Ответ

1 голос
/ 19 марта 2011

Кажется, что в query/<needle:\w+> часть \w+ перестанет совпадать с первым несловарным символом (например, пробелом). Изменение \w на что-то более прощающее (например, [\w ]), вероятно, поможет.

...