【问题标题】:laravel: problem in delete Route functionlaravel:删除路由功能的问题
【发布时间】:2019-09-01 01:25:17
【问题描述】:

我正在开发 Laravel5.5,我正在做 Crud 操作。目前我正在删除,但我遇到了 Route 问题。

这是controll的crud操作的路线

    // 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'));

    }
}

问题是当我点击确认删除按钮时,它说找不到页面,这是它会去的网址

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

我注意到有额外的反斜杠。谢谢!

【问题讨论】:

  • 您可以使用postman 应用程序来检查删除、发布等网址。如果您在浏览器中点击网址,则始终为get

标签: php laravel routes crud laravel-5.5


【解决方案1】:

当使用route() helper 时,传递一个变量必须有一个 key 的 url 参数

对于您的情况,您应该使用 tests 而不是 id

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

我建议将路线更改为id,这样更有意义:

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

站点说明:最好使用Route::delete() 来明确您的路线。 ::get() 假设您正在获取页面或数据。这将需要更改您的模式以使用包装您的&lt;button&gt;&lt;form&gt;

【讨论】:

  • 这不起作用,url中额外的正斜杠也有同样的问题
  • @abokorhassan 另请注意,您的网址中有index.php。这可能需要取出(检查您的 .env 文件以查看是否设置在那里)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-06
  • 1970-01-01
  • 1970-01-01
  • 2019-07-31
  • 2014-08-14
  • 2018-11-20
相关资源
最近更新 更多