我正在使用带有db-data的分页后端表。管理员可以过滤该表以获取数据状态。这通过ajax发生。一切正常,但是当我点击第二个分页链接时,我没有得到所选的过滤器值以保持选中状态。
E.g。我选择了选项:'1'=> '活动',以便只显示状态为1的db-rows。但是当我单击第二个分页链接以查看接下来的20行时,它再次显示不活动的db-rows。在这种情况下,如何让所选选项保持选中状态?我尝试了输入:: old('status')并传递$ selected来查看,但没有成功。谢谢你的提示!
查看:
<form id="filter_form" onsubmit="" action="<?php echo URL::action('countries@anyIndex'); ?>">
<?php echo Form::select('filter_status', funcs::get_status_options(), $selected, array('id' => 'filter_status')); ?>
</form>
的Ajax:
$(function(){
$("#filter_status").on('change', function(){
frm = $("#filter_form");
frm.serialize();
status = $('#filter_status').val();
$.ajax({
type: "POST",
url: $(frm).attr('action'),
data: {status: status},
success: function(data){
$("#list").html(data.list);
},
dataType: "json"
});
});
});
控制器:
class countries extends BaseController {
public $filter = array(0,1,2);
function anyIndex()
{
$data['title'] = "Countries list";
if(Input::has('status')){
$status = Input::get('status');
if($status != 2){
$this->filter = array($status);
}
}
$d['items'] = $this->_getItems(20);
if(Request::ajax()){
$data['list'] = View::make('admin/countries/countries_list', $d)->withInput($status)->render();
return Response::json($data);
}
$data['selected'] = $this->filter;
$data['list'] = View::make('admin/countries/countries_list', $d);
return View::make('admin/admin_layout')->nest('view', 'admin/countries/countries_view', $data);
}
private function _getItems($paginate)
{
$items = Country::whereIn('status', $this->filter)->paginate($paginate);
return $items;
}
}