我在 config / main 中有以下网址规则:
'urlManager'=>array(
//'appendParams' => true, // I've tried it without success.
'urlFormat'=>'path',
'rules' => array(
// other rules...
'experience/search/<param:\w+>' => 'experience/searchExperiences',
我使用带有GET
方法的表单,我希望它能生成如下的网址:
http://site.dev/experience/search/Viseu
但我得到的是:
http://site.dev/experience/search?searchText=Viseu
-
这是表格部分:
<form action="/experience/search" method="get" class="search-form">
<div class="cell">
<?php
$this->widget(
'zii.widgets.jui.CJuiAutoComplete',
array(
'id' => "search-text",
'name' => "searchText",
'options' => array(
'minLength' => '3',
),
'source' =>
'js: function(request, response) {
getSuggestions(request, response);
}',
)
);
?>
</div>
-
如何配置Yii呢?
答案 0 :(得分:2)
使用的规则:'experience/search/<param:\w+>' => 'experience/searchExperiences',
在提交:
上添加了JavaScript代码$('#form-search').submit(function(event) {
var searchText = $('#search-text').val();
$('#form-search').attr("action", '/experience/search/' + searchText);
});
将表单的方法更改为POST
:
<form id="form-search" action="/experience/search" method="post" class="search-form">
我仍会等待更好的建议。
答案 1 :(得分:1)
您需要在网址规则中添加GET变量的名称:
'experience/search/<searchText:(.*)>' => 'experience/searchExperiences',
我还将\w+
更改为(.*)
,因为第一个只匹配字母数字字符。后者匹配所有字符。
答案 2 :(得分:0)
你做不到。如果您使用以下内容,则只能获得正确的URL:
Yii::app()->createUrl(
'experience/search',
array(
'param' => 'whatever'
)
);