Yii2:使用带分页的 Pjax POST 方法在 Gridview 中搜索
我是 yii2 & 的初学者尝试在搜索按钮上使用 Pjax 在 Gridview 中搜索字段.我已使用 GET 方法完成此操作,但我想使用 POST 方法完成此操作.那么我如何使用带有分页的 Yii2 Pjax(post 方法)来做到这一点?
这是我的代码:
_details.php
:
registerJs($js);?><div class="col-lg-5"><?phpPjax::begin(['id' => 'bank-form']);$form = ActiveForm::begin(['id' =>'bank-details-form','方法' =>'邮政',]);如果($_REQUEST['bank_name']){$searchModel->bank_name = $selected;}//银行级别 1echo $form->field($searchModel, 'bank_name')->widget(DepDrop::classname(), ['数据' =>$银行名称,'选项' =>['占位符' =>'选择银行'],'类型' =>DepDrop::TYPE_SELECT2,'select2Options' =>['pluginOptions'=>['allowClear'=>true]],'插件选项' =>['取决于' =>[''],'网址' =>Url::to(['/students/child-account']),]]);//状态级别 2echo $form->field($searchModel, 'state')->widget(DepDrop::classname(), ['类型' =>DepDrop::TYPE_SELECT2,'数据' =>$bankState,'选项' =>['占位符'='选择状态'],'select2Options' =>['pluginOptions'=>['allowClear'=>true]],'插件选项' =>['取决于' =>['bankdetails-bank_name'],'网址' =>Url::to(['/students/child-account']),'loadingText' =>'选择银行',]]);//区域级别 3echo $form->field($searchModel, 'district')->widget(DepDrop::classname(), ['数据' =>$bankState,'选项' =>['占位符' =>'选择地区'],'类型' =>DepDrop::TYPE_SELECT2,'select2Options' =>['pluginOptions'=>['allowClear'=>true]],'插件选项' =>['取决于' =>['bankdetails-state'],'网址' =>Url::to(['/students/auto-populate-districts']),'loadingText' =>'选择地区',]]);//城市等级 4echo $form->field($searchModel, 'city')->widget(DepDrop::classname(), ['数据' =>$bankCity,'选项' =>['占位符' =>'选择城市'],'类型' =>DepDrop::TYPE_SELECT2,'select2Options' =>['pluginOptions'=>['allowClear'=>true]],'插件选项' =>['取决于' =>['bankdetails-区'],'网址' =>Url::to(['/students/auto-populate-cities']),'loadingText' =>'选择城市',]]);?><div class="form-group"><br/><?= Html::submitButton('Search', ['class' =>'btn btn-success']) ?><?php ActiveForm::end();Pjax::end();?>
解决方案尝试使用Pjax的post方法:
$.pjax.reload({url: url, method: 'POST', container:'#bank-grid'});
I am beginner to yii2 & trying to search fields in Gridview using Pjax on search button. I have done this with GET method but I want to do this by using POST method. Then how can I do this with Yii2 Pjax(post method) with pagination?
Here is my code :
_details.php
:
<?php
use yiihelpersHtml;
use yiiwidgetsActiveForm;
use yiiwidgetsPjax;
use kartikdepdropDepDrop;
$js = <<<JS
// get the form id and set the event
$('#bank-details-form').on('beforeSubmit', function(e) {
var form = $(this);
if(form.find('.has-error').length) {
return false;
}
$.ajax({
url: form.attr('action'),
type: 'post',
data: form.serialize(),
success: function(response) {
var txtValue = $("#bankdetails-bank_name").val();
if(txtValue == "")
{
alert("Please select bank name");
return false;
}
var bank_name = $('#bankdetails-bank_name option:selected').text();
var state = $('#bankdetails-state option:selected').text();
var district = $('#bankdetails-district option:selected').text();
var city = $('#bankdetails-city option:selected').text();
var url = form.attr('action')+ '&BankDetails[bank_name]='+bank_name+'&BankDetails[state]='+state+'&BankDetails[district]='+district+'&BankDetails[city]='+city;
$.pjax.reload({url: url, container:'#bank-grid'});
}
});
}).on('submit', function(e){
e.preventDefault();
});
JS;
this->registerJs($js); ?>
<div class="col-lg-5">
<?php
Pjax::begin(['id' => 'bank-form']);
$form = ActiveForm::begin(['id' => 'bank-details-form',
'method' => 'post',
]);
if($_REQUEST['bank_name'])
{
$searchModel->bank_name = $selected;
}
// Bank level 1
echo $form->field($searchModel, 'bank_name')->widget(DepDrop::classname(), [
'data' => $bankName,
'options' => ['placeholder' => 'Select Bank'],
'type' => DepDrop::TYPE_SELECT2,
'select2Options' => ['pluginOptions'=>['allowClear'=>true]],
'pluginOptions' => [
'depends' => [''],
'url' => Url::to(['/students/child-account']),
]
]);
// State level 2
echo $form->field($searchModel, 'state')->widget(DepDrop::classname(), [
'type' => DepDrop::TYPE_SELECT2,
'data' => $bankState,
'options' => ['placeholder'=>'Select State'],
'select2Options' => ['pluginOptions'=>['allowClear'=>true]],
'pluginOptions' => [
'depends' => ['bankdetails-bank_name'],
'url' => Url::to(['/students/child-account']),
'loadingText' => 'Select Bank',
]
]);
// District level 3
echo $form->field($searchModel, 'district')->widget(DepDrop::classname(), [
'data' => $bankState,
'options' => ['placeholder' => 'Select District'],
'type' => DepDrop::TYPE_SELECT2,
'select2Options' => ['pluginOptions'=>['allowClear'=>true]],
'pluginOptions' => [
'depends' => ['bankdetails-state'],
'url' => Url::to(['/students/auto-populate-districts']),
'loadingText' => 'Select District',
]
]);
// City level 4
echo $form->field($searchModel, 'city')->widget(DepDrop::classname(), [
'data' => $bankCity,
'options' => ['placeholder' => 'Select City'],
'type' => DepDrop::TYPE_SELECT2,
'select2Options' => ['pluginOptions'=>['allowClear'=>true]],
'pluginOptions' => [
'depends' => ['bankdetails-district'],
'url' => Url::to(['/students/auto-populate-cities']),
'loadingText' => 'Select City',
]
]);
?>
<div class="form-group"><br/>
<?= Html::submitButton('Search', ['class' => 'btn btn-success']) ?>
</div>
<?php ActiveForm::end();
Pjax::end(); ?>
</div>
解决方案
Try using post method of Pjax:
$.pjax.reload({url: url, method: 'POST', container:'#bank-grid'});
相关文章