Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 27.04.2015 11:57:59

csrf_token AND jqgrid

Добрый  день.

Пытаюсь прикрутить  jqgrid на laravel. Налетел на  VerifyCsrfToken.  Не могу решить.

Система такая  грузится страничка с табличкой, на которой есть две ссылки по одной загружается сам контент

 if( $('#jqgrid').length > 0 ) {
        grid.jqGrid({
            url: '/setting/lists.loaddata',
            mtype: "post",
            "postData":{
                "_token":"{!!csrf_token()!!}"
            },
            "editData":{
                "_token":"{!!csrf_token()!!}"
            },
            datatype: "json",
            colNames: [' ', 'ID', 'Название', 'Табличка', '],
            colModel: [
                {name:'myac', width:80, fixed: true, sortable:false,resize:false, search: false,formatter:'actions',formatoptions:{editbutton:true,delbutton:true}},
                {name: 'DBID', index: 'DBID', width: 20, align: "left", editable: false, editrules: {required: false}, sortable: false, search: false},

            ],
            rowNum: '{!!$row_numbers!!}',
            width:  "100%",
            height: "100%",
            rowList: {!!Config::get('gconfig.default_rowList')!!},
            pager: '#jqgrid-pager',
            editurl: "/setting/lists.edit",
            //editData: "_token:'{!!csrf_token()!!}'",
            sortname: '{!!$sortname!!}',
            multiselect: false,
            viewrecords: true,
            rownumbers: false,
            gridview: true,
            caption: "{{$table_title}}",
            ondblClickRow: function(id) {
                if (id && id != lastSel) {
                    jQuery("#list").restoreRow(lastSel);
                    jQuery("#list").editRow(id, true);
                    lastSel = id;
                }
            },
        })

ссылка  url: '/setting/lists.loaddata', отрабатывает, а вот вторая   editurl: "/setting/lists.edit", не отрабатывает.
Хотя в запросе токен есть  http://joxi.ru/Vm6vZ3OFdj6MmZ. Если в middleware комментировать строчку 'App\Http\Middleware\VerifyCsrfToken', то все работает.

Проблема я так понимаю в том что страничка не обновляется после каждого действия, и токен меняется. Вот как  решить "по фкеншую" не знаю. Прошу помочь.

Не в сети

#2 27.04.2015 21:39:53

Re: csrf_token AND jqgrid

а у тебя в роуте что пришли и в контроллере

Не в сети

#3 29.04.2015 14:31:41

Re: csrf_token AND jqgrid

Jack_White пишет:

а у тебя в роуте что пришли и в контроллере

Route::group(['prefix' => '/setting', 'middleware' => 'sentry.admin'], function () {
    Route::get('lists', ['as' => 'lists.idex', 'uses' => 'ListsSetingsController@index']);
    Route::match(['get', 'post'], 'lists.loaddata', ['as' => 'lists.loaddata', 'uses' => 'ListsSetingsController@loaddata']);
    Route::post('lists.edit', ['as' => 'lists.edit', 'uses' => 'ListsSetingsController@edit']);
});

 public function loaddata() {

        
        $idkey = $this->idkey;
        $table = $this->table;
        $join = $this->join;

        $where_=NULL;

        $default_row_grud = Config::get('gconfig.default_row_grud');
        $default_type_sort = Config::get('gconfig.default_type_sort');

        $options = array();
        $options['limit'] = \Request::input('rows', $default_row_grud);
        $options['table_sort'] = \Request::input('sidx',  $idkey);
        $options['type_sort'] = \Request::input('sord', 'asc');
        
        //$count = $this->grud->getSimpleCount($table, $where_);
        $count = $this->grud->getFullCount($table, $where_);

        
        $total_pages = ($count > 0) ? ceil($count / $options['limit']) : 0;
        $page = \Request::input('page', 1);
        $options['start'] = max($options['limit'] * $page - $options['limit'], 0);
        //$query = $this->grud->getSimpleDesignation($table, $options, $where_, $join);
        $query = $this->grud->getFullDesignation($table, $options, $where_, $join);

        // dd($query);
        
        $responce['page'] = ($page > $total_pages) ? $total_pages : $page;
        $responce['total'] = $total_pages;
        $responce['records'] = $count;
        $i = 0;
        foreach ($query as $row) {
            $responce['rows'][$i]['id'] = $row->{$idkey};
            $responce['rows'][$i]['cell'] = array(
                "",
                $row->{$this->idkey},
                $row->NAME,
                $row->TABLE_NAME,
                $row->atems_max,
                $row->table_data_search,
                @unserialize($row->ADMIN_TABLE),
                @unserialize($row->USER_TABLE),
                ($row->STATE) ? 'Вкл' : 'Выкл',
                $row->DESCRIPTION,
            );
            $i++;
        }

        return response()->json($responce);
    }


      public function edit() {

        $idkey = $this->idkey;
        $table = $this->table;
        $join = $this->join;

        $oper = \Request::input('oper');
        $id = \Request::input('id');

        switch ($oper) {
            case 'add':
                return response('Операция не позволена в данном контексте', 500);
                break;
            case 'edit':
                $data = array();
                $ADMIN_TABLE = \Request::input('ADMIN_TABLE');
                $adm_table=array();
                if(!empty($ADMIN_TABLE)){
                  $adm_table= explode(",", trim($ADMIN_TABLE));

                }
                $USER_TABLE = \Request::input('USER_TABLE');
                $usr_table=array();
                if(!empty($USER_TABLE)){
                  $usr_table= explode(",", trim($USER_TABLE));

                }
                $data['ADMIN_TABLE'] = serialize($adm_table);
                $data['USER_TABLE'] = serialize($usr_table);
                $data['NAME'] = \Request::input('NAME');
                $data['atems_max'] = \Request::input('atems_max');
                $data['TABLE_NAME'] = \Request::input('TABLE_NAME');
                $data['table_data_search'] =\Request::input('table_data_search');
                $data['DESCRIPTION'] =\Request::input('DESCRIPTION');
                $data['STATE'] = \Request::input('STATE');


                $this->grud->update_Designation($id, $data, $table, $idkey);
                break;
            case 'del':
                $this->grud->delete_Designation($id, $table, $idkey);
                break;

            default:
              return response('Операция не позволена в данном контексте', 500);
              break;
                
        }

Не в сети

#4 29.04.2015 14:47:29

Re: csrf_token AND jqgrid

А зачем тебе get и post запросы для loaddata и странные урлы "lists.edit" лучше "lists/edit" но это н суть
Там посмотри отправляются ли ключ по запросу (сеть)

Не в сети

#5 30.04.2015 10:55:47

Re: csrf_token AND jqgrid

Jack_White пишет:

А зачем тебе get и post запросы для loaddata и странные урлы "lists.edit" лучше "lists/edit" но это н суть
Там посмотри отправляются ли ключ по запросу (сеть)

Jack? благодарю  - носом ткнули в ошибку.
Тему можно закрывать проблема была на стороне  jqgrid.

Не в сети

#6 30.04.2015 12:11:15

Re: csrf_token AND jqgrid

Пожалуйста

Не в сети

Подвал раздела