Yii - URL路径中的GET参数

时间:2014-05-26 10:46:50

标签: php yii

我在 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呢?

3 个答案:

答案 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'
    )
);