Laravel 6 - функция обновления в контроллере запущена, но модель не передана в контроллер - PullRequest
0 голосов
/ 10 марта 2020

Я хочу обновить запись из таблицы background_check_batches. Что было сделано, так это перечисление всех записей, каждая из которых имеет свойство status (столбец), которое можно изменить. При нажатии на значение status появится всплывающее модальное окно для обновления значения. Поскольку существует несколько записей, совместно использующих одну модель, действие формы изменяется с помощью js. Проблема заключается в том, что при отправке формы запрашиваемые данные получены, а идентификатор модели BackgroundCheckBatch - нет. Ранее я выполнял такую ​​задачу, которая идентична, но по какой-то причине она просто не работает. Ниже приведены мои коды.

web. php

Route::put('/admin/dashboard/background-request/{backgroundrequest}', 'BackgroundCheckBatchController@update')->name('update');

status.blade. php ()

{!! Form::open(['action' => ['BackgroundCheckBatchController@update', -1], 'method' => 'POST', 'id' => 'adminBackgroundCheckStatusModalForm']) !!}

            @csrf
            @method("PUT")

            <div class="modal__content">
                <select class="table_custom_select" id="Status" name="status">
                        <option class="table_custom_select_pending" value="Pending">Pending</option>
                        <option class="table_custom_select_progress" value="In Progress">In Progress</option>
                        <option class="table_custom_select_complete" value="Completed">Completed</option>
                </select>
            </div>

            <div class="modal__footer">
                <button type="submit" class="button button_size_m button_theme_primary">Proceed</button>
            </div>

{!! Form::close() !!}

BackgroundcheckBatchController

public function update(Request $request, BackgroundCheckBatch $backgroundCheckBatch) {
    return $backgroundCheckBatch;
}

return $backgroundCheckBatch; выведенный и пустой массив, [] Я ожидаю, что он возвратит BackgroundCheckBatch указанного идентификатора в URL

Если я return $request;, он будет выводить так:

{
    _token: "Ax789Dr4VXFVE1vpjtKhEWdBjdCZqARDaNQnk7K8",
    _method: "PUT",
    status: "Completed"
}

Сообщите мне, если я не предоставил достаточно деталей

Ответы [ 2 ]

2 голосов
/ 10 марта 2020

Если вы хотите использовать привязку модели маршрута, имя вашего параметра в функции обновления должно соответствовать параметру маршрута:

public function update(Request $request, BackgroundCheckBatch $backgroundrequest) {
    return $backgroundrequest;
}
1 голос
/ 10 марта 2020

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

Измените параметр вашего маршрута на snake_case of $backgroundCheckBatch (имя аргумента с подсказкой типа метода контроллера):

Route::put('/admin/dashboard/background-request/{background_check_batch}', 'BackgroundCheckBatchController@update')->name('update');
...