我正在尝试将OpenSearch功能添加到我的Yii应用程序中,并且无法配置UrlManager以将搜索请求路由到正确的控制器(在本例中称为查询)和方法(称为索引)。如果搜索词中没有空格,搜索效果很好。每当有人搜索多个单词时,UrlManager都找不到用于处理搜索的控制器和方法。
search.xml文件中触发搜索的url如下所示:
<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,
),
答案 0 :(得分:1)
似乎在query/<needle:\w+>
中,\w+
部分将在第一个非单词字符(例如空格)处停止匹配。将\w
更改为更宽容的内容(例如[\w ]
)可能会有所帮助。