首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >yii通过post而不是get搜索表单

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

Stack Overflow用户
提问于 2013-02-12 03:35:08
回答 1查看 1.9K关注 0票数 0

我有一个简单的搜索

代码语言:javascript
运行
AI代码解释
复制
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方法:

代码语言:javascript
运行
AI代码解释
复制
$form=$this->beginWidget('CActiveForm', array(
    'action'=>Yii::app()->createUrl($this->route),
    'method'=>'post',
));

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-12 03:43:10

在控制器的actionAdmin函数中,将$_GET替换为$_POST...

代码语言:javascript
运行
AI代码解释
复制
if(isset($_GET['Model']))
    $model->attributes=$_GET['Model'];

将以上行中的$_GET替换为$_POST,如下所示:

代码语言:javascript
运行
AI代码解释
复制
if(isset($_POST['LoginLog']))
    $model->attributes=$_POST['LoginLog'];

关于搜索,总是建议使用GET而不是POST,我使用的基本规则是,当某些数据需要提交时,它应该是POST,当一些数据需要获取时,它应该是GET。

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

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

2)如果过滤参数是在url中,在某些filters..Imagine之后很容易分享结果你想和朋友分享一些结果,你会告诉他如何逐步过滤(在发布的情况下),还是给他一个直接的url(GET)

3)从url更改参数非常容易,想象一下你当前访问的是第2页,但在页面上显示过滤器时,只显示下5页的链接,但你想直接跳到第15页的结果。

还会有更多的好处,我现在就能想到这些。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14824963

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文