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进行搜索是有技术原因还是惯例?