下面是我的 routes/web.php 文件中的路由定义示例。
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\WidgetController;
Route::controller(WidgetController::class)->name('widgets.')->prefix('widgets')->group(function () {
Route::get('{id}/{slug}', 'show')->name('show');
Route::get('create', 'create')->name('create')->middleware('auth');
Route::post('store', 'store')->name('store')->middleware('auth');
Route::get('{id}/edit', 'edit')->name('edit')->middleware('auth');
Route::post('update', 'update')->name('update')->middleware('auth');
});
列出的所有路线都可以正常工作,除了一条。
Route::get('{id}/edit', 'edit')->name('edit')->middleware('auth');
无论出于何种原因,当它像这样编写时,它完全可以正常工作:
Route::get('{id}', 'edit')->name('edit')->middleware('auth');
或这个:
Route::get('{id}//edit', 'edit')->name('edit')->middleware('auth');
使用“Route::resource”,默认将是第一个“编辑”路由。但是,当这样定义它时,我得到一个 404。我关联的控制器方法是这样写的:
public function edit($id)
{
// Rest of code here
}
会不会是 Laravel 将“编辑”误认为是第二个参数?但是考虑到它是资源方法的默认值,这并没有多大意义。