yii通过post而不是get搜索表单

yii通过post而不是get搜索表单,yii,Yii,我有一个简单的搜索 public function search() { $criteria=new CDbCriteria; $criteria->with = array('agent'); $criteria->compare('full_name',$this->full_name,true); if ($this->gender_id != "") { $criteria->compare('gender

我有一个简单的搜索

public function search() {
    $criteria=new CDbCriteria;
    $criteria->with = array('agent');

    $criteria->compare('full_name',$this->full_name,true);

    if ($this->gender_id != "") {
        $criteria->compare('gender_id',$this->gender_id);
    }

    return new CActiveDataProvider($this, array(
        'criteria'=>$criteria,
        'pagination'=>array(
            'pageSize'=>30,
        ),
    ));
}
但我不喜欢在使用
get
方法进行搜索时,搜索参数出现在地址栏中。我已将搜索小部件更改为使用
post
方法:

$form=$this->beginWidget('CActiveForm', array(
    'action'=>Yii::app()->createUrl($this->route),
    'method'=>'post',
));

但是现在,当我点击搜索按钮时,页面只是刷新而不是显示搜索结果,我假设我在这里遗漏了一些东西…

在控制器的actionAdmin函数中,replace$\u GET by$\u POST

if(isset($_GET['Model']))
    $model->attributes=$_GET['Model'];
将上述行中的$\u GET替换为$\u POST,如:

if(isset($_POST['LoginLog']))
    $model->attributes=$_POST['LoginLog'];
在搜索的旁注中,总是建议使用GET而不是POST,我使用的基本规则是每当需要提交某些数据时,它应该是POST,每当需要获取某些数据时,它应该是GET

更新: 我能想到的主要原因是我会使用GET进行搜索

1) 在搜索中,用户需要返回到上一个过滤器的功能,如果将其用作获取url参数,则是直接的

2) 如果筛选参数在url中,在某些筛选后共享结果非常容易。假设你想与朋友共享一些结果,你会给他一步一步筛选的指示(如果是POST),还是给他一个直接的url(GET)

3) 从url更改参数非常容易,假设您当前正在访问第2页,但在显示过滤器的页面上只显示指向下5页的链接,但您希望直接跳到第15页结果


还有很多优点,我现在可以想到这些。

在控制器的actionAdmin功能中,替换$\u GET by$\u POST

if(isset($_GET['Model']))
    $model->attributes=$_GET['Model'];
将上述行中的$\u GET替换为$\u POST,如:

if(isset($_POST['LoginLog']))
    $model->attributes=$_POST['LoginLog'];
在搜索的旁注中,总是建议使用GET而不是POST,我使用的基本规则是每当需要提交某些数据时,它应该是POST,每当需要获取某些数据时,它应该是GET

更新: 我能想到的主要原因是我会使用GET进行搜索

1) 在搜索中,用户需要返回到上一个过滤器的功能,如果将其用作获取url参数,则是直接的

2) 如果筛选参数在url中,在某些筛选后共享结果非常容易。假设你想与朋友共享一些结果,你会给他一步一步筛选的指示(如果是POST),还是给他一个直接的url(GET)

3) 从url更改参数非常容易,假设您当前正在访问第2页,但在显示过滤器的页面上只显示指向下5页的链接,但您希望直接跳到第15页结果


还有很多优点,我现在可以想到这些。

您是否也更改了控制器的
actionAdmin
(默认名称)?不,我没有更改控制器中的“获取”帖子。。。哼!很晚了…您是否也更改了控制器的
actionAdmin
(默认名称)?不,我没有更改控制器中的“获取”帖子。。。哼!太晚了…使用get进行搜索是有技术原因还是惯例?使用get进行搜索是有技术原因还是惯例?