使用laravel保持选择值

时间:2014-08-30 16:36:29

标签: forms laravel laravel-4

我正在使用带有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;
    }
}

0 个答案:

没有答案