php - laravel:删除路由功能的问题
问题描述
我正在开发 Laravel5.5,我正在做 Crud 操作。目前我正在删除,但我遇到了路线问题。
这是 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">×</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
我注意到有额外的反斜杠。谢谢!
解决方案
使用route()
helper 时,传递变量必须有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>
.
推荐阅读
- javascript - 如何将 JS 函数传递给 PHP 函数
- sql - SQL 查询错误 REGEXP_INSTR 表达式中带有括号
- botframework - 在 ms 团队中无需单击按钮即可生成任务模块
- python - 关于类型转换的基本python问题
- delphi - 如何更改 Tobject 变量的指针地址?
- javascript - 提交表单仅在 Firefox 浏览器中不起作用
- kotlin - Dokka 不生成文档
- javascript - 从节点产生时ffmpeg缓冲标准输入
- python - 如何修复 Python TypeError:不支持的操作数类型“int”和“元组”
- python - 遍历 pandas 中的组以提取顶部