Не удается получить идентификатор из URL-адреса Laravel

У меня есть представление данных, которое показывает некоторые сообщения от user, я хочу создать таблицу данных с кнопкой, которая может отображать все сообщения пользователей. Но при переходе из всех списков сообщений в списки пользовательских сообщений я не могу получить user_id из URL-адреса. Я хочу получить user_id, используя $request->route. Вот мой контроллер:-

 public function index(Request $request)
    {
          if ($request->ajax()) {
            $request->route('detail');
            $data = Post::where('user_id', $this->route('detail'))->latest()->get();
            return Datatables::of($data)
                ->addIndexColumn()
                ->addColumn('action', function ($row) {

                    $btn = ' <a href="javascript:void(0)" data-toggle="tooltip"  data-id="' . $row->id . '" data-original-title="Detail" class="btn btn-success mr-1 btn-sm detailProduct"><span class="fas fa-info"></span></a>';

                    return $btn;
                })
                ->rawColumns(['action'])
                ->make(true);
        }

        return view('detail');
    }

Вот мой маршрут:-

Route::resource('detail', DetailController::class);

код с данными

var table = $('.data-table').DataTable({
            paging: true,
            info: true,
            autoWidth: false,
            responsive: true,
            
            columnDefs: [{
                    "targets": [0, 2, 3, 4, 5, 6], // your case first column
                    "className": "text-center",

                },

            ],
            language: {
                paginate: {
                    next: '<span class="fas fa-arrow-right"></span>', // or '→'
                    previous: '<span class="fas fa-arrow-left"></span>' // or '←' 
                }
            },
            oLanguage: {
                "oPaginate": {
                    next: '&#8594;', // or '→'
                    previous: '&#8592;' // or '←' 
                },
                "sLengthMenu": "Tampilkan _MENU_ Item",
                "sEmptyTable": "Tidak ada data",
                "sInfoEmpty": "Tidak ditemukan",
                "sLoadingRecords": "Sedang memproses - loading...",
                "sInfo": "Menampilkan _START_ - _END_ dari _TOTAL_ Item",
                "sSearch": "Cari:",
            },
            processing: true,
            serverSide: true,
            ajax: "{{ route('detail.index') }}",

            columns: [{
                    data: 'DT_RowIndex',
                    name: 'DT_RowIndex',
                    orderable: false,
                    searchable: false,
                },
                {
                    data: 'title',
                    name: 'title',
                    orderable: false,
                },
                {
                    data: 'content',
                    name: 'content',
                    orderable: false,
                    visible: false,
                },
                {
                    data: 'progress',
                    name: 'progress'
                },
                {
                    data: 'status',
                    name: 'status'
                },
                {
                    data: 'target_selesai',
                    name: 'target_selesai'
                },
                {
                    data: 'action',
                    name: 'action',
                    orderable: false,
                    searchable: false
                },
            ]
        });

Если я изменю $this->route('detail') на значение user_id, программа будет работать как положено. Что-то не так с моим кодом? заранее спасибо


person Vysco Zyza    schedule 13.02.2021    source источник


Ответы (1)


Изменить это:-

$this->route('detail')

Кому:-

$request->get('details')

И ваш метод ajax должен быть таким:

"ajax": {
    'type': 'POST',
    'url': '{{ route('detail.index') }}',
    'data': {
       detilas: 'your id',
      
    },
}

твоя рура:

Route::post('detail', DetailController::class);
person Zia Yamin    schedule 13.02.2021
comment
Ошибка исчезает, но datatable не показывает никаких данных. Где я могу увидеть свой код ajax? - person Vysco Zyza; 13.02.2021
comment
как вы проверили, если if ($request->ajax()), значит, у вас есть код ajax, он есть в вашем файле блейда - person Zia Yamin; 13.02.2021
comment
Я отредактировал свой пост, пожалуйста, проверьте мой код - person Vysco Zyza; 13.02.2021
comment
отредактировал мой ответ - person Zia Yamin; 13.02.2021
comment
details: 'your id', что такое "ваш идентификатор"? это имя данных или переменной? - person Vysco Zyza; 13.02.2021
comment
да, id, которое вы отправляете controller, и тем самым вы проверяете свое where состояние - person Zia Yamin; 13.02.2021
comment
Я попробовал ваше предложение, если я добавлю route::match, он вернет ошибку laravel, сказавшую App\Http\Controllers\DetailController` is not invokable., если я не добавлю этот код соответствия маршрута, таблица данных все еще не показывает никаких данных - person Vysco Zyza; 13.02.2021
comment
Давайте продолжим обсуждение в чате. - person Zia Yamin; 13.02.2021