laravel: проблема в удалении функции Route - PullRequest
0 голосов
/ 10 апреля 2019

Я работаю над Laravel5.5 и выполняю операцию Crud.В настоящее время я работаю над удалением, но у меня проблема с Route .

это Маршруты для грубых операций управления

    // Test Management
Route::group([ 'prefix' => 'tests'], function () {
    Route::get('data', 'TestController@data')->name('tests.data');
    Route::get('{tests}/delete', 'TestController@destroy')->name('tests.delete');
    Route::get('{tests}/confirm-delete', 'TestController@getModelDelete')->name('tests.confirm-delete');

});
Route::resource('tests', 'TestController');

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

public function getModelDelete(Test $test)
{
    $model = 'tes'; # this model is for the path of the modal
    $confirm_route = $error = null;
    try {
        $confirm_route = route('admin.tests.delete', ['id' => $test->id]);
        return view('admin.layouts.modal_confirmation', compact('error', 'model', 'confirm_route'));
    } catch (GroupNotFoundException $e) {

        $error = trans('tes/message.error.destroy', compact('id'));
        return view('admin.layouts.modal_confirmation', compact('error', 'model', 'confirm_route'));
    }
}

это модал для подтверждения удаления

<div class="modal-header">
   <button type="button" class="close" data-dismiss="modal" aria- 
       hidden="true">&times;</button>
    <h4 class="modal-title" 
        id="user_delete_confirm_title">@lang($model.'/modal.title')</h4>
</div>
<div class="modal-body">
    @if($error)
       <div>{!! $error !!}</div>
    @else
       @lang($model.'/modal.body')
    @endif
</div>
<div class="modal-footer">
    <button type="button" class="btn btn-default" data- 
          dismiss="modal">@lang($model.'/modal.cancel')</button>
     @if(!$error)
        <a href="{{ $confirm_route }}" type="button" class="btn btn- 
              danger">@lang($model.'/modal.confirm')</a>
     @endif
</div>

и это метод удаления в контроллере

 public function destroy($id)
{
    $test = Test::find($id);
    $test->delete();
    return redirect('admin/tests')->with('success', trans('tes/message.success.delete'));

    }
}

Дело в том, что когда я нажимаю кнопку подтверждения удаления, он говорит, что Страница не найдена, и этоURL будет идти

http://localhost/bsproject/public/index.php/admin/tests//delete

, и я заметил, что есть дополнительная обратная косая черта.и спасибо!

1 Ответ

1 голос
/ 10 апреля 2019

При использовании помощника route() передача переменной должна иметь ключ параметра url .

В вашем случае вместо idВы должны использовать tests:

$confirm_route = route('admin.tests.delete', ['tests' => $test->id]);

Я бы посоветовал изменить маршрут на id, чтобы иметь больше смысла:

Route::get('{id}/delete', 'TestController@destroy')->name('tests.delete');

Примечание к сайту :Было бы лучше использовать Route::delete(), чтобы уточнить ваши маршруты.::get() предполагает, что вы получаете страницу или данные.Это потребует изменения вашего модального режима для использования <form>, который обернет ваш <button>.

...