我正在嘗試設定一個基本的 Laravel 9 CRUD 應用程式,但我無法讓編輯路由為用戶控制器作業。
路線/web.php
Route::get('/dashboard', function () { return view('dashboard'); })
->middleware(['auth'])->name('dashboard');
use App\Http\Controllers\UserController;
Route::controller(UserController::class)->group(function(){
Route::get('user','index')->middleware('auth')->name('cases');
Route::get('user/create','create')->middleware('auth');
Route::post('user/create','store')->middleware('auth');
Route::get('user/{$id}/edit','edit')->middleware('auth');
Route::post('user/{$id}/edit','update')->middleware('auth');
Route::get('user/{$id}/delete','destroy')->middleware('auth');
Route::get('user/{id}','show')->middleware('auth');
});
require __DIR__.'/auth.php';
用戶控制器.php
class UserController extends Controller
{
function edit(int $id)
{
echo 123;
}
我收到 404 NOT FOUND 頁面

另外,為什么我看不到此錯誤的堆疊跟蹤?
另外,在一些示例中,我看到有人在控制器方法宣告中使用模型類名作為引數型別,例如:
function edit(User $id)
{
echo 123;
}
但是,我也看到了其他使用int的示例。那么哪個是正確的呢?
uj5u.com熱心網友回復:
首先,在你的 .env 過濾器中你應該放
APP_ENV=local
APP_DEBUG=true
并將您的 web.php 更改為:
<?php
use Illuminate\Support\Facades\Route;
Route::get('/dashboard', function () { return view('dashboard'); })->middleware(['auth'])->name('dashboard');
use App\Http\Controllers\UserController;
Route::controller(UserController::class)->group(function(){
Route::get('user','index')->middleware('auth')->name('cases');
Route::get('user/create','create')->middleware('auth');
Route::post('user/create','store')->middleware('auth');
Route::get('user/{id}/edit','edit')->middleware('auth');
Route::post('user/{id}/edit','update')->middleware('auth');
Route::get('user/{id}/delete','destroy')->middleware('auth');
Route::get('user/{id}','show')->middleware('auth');
});
require __DIR__.'/auth.php';
然后,嘗試運行
php artisan route:list
并檢查您的路線是否正確。
并嘗試洗掉用戶檔案中的中間件,也許您沒有登錄頁面,它會將您重定向到那里。
確保您在正確的網址中,例如localhost/user/1/edit
uj5u.com熱心網友回復:
路線中的引數不帶起始$。{$id}將路線中所有出現的 更改為 just {id}:
Route::controller(UserController::class)->group(function(){
Route::get('user','index')->middleware('auth')->name('cases');
Route::get('user/create','create')->middleware('auth');
Route::post('user/create','store')->middleware('auth');
Route::get('user/{id}/edit','edit')->middleware('auth');
Route::post('user/{id}/edit','update')->middleware('auth');
Route::get('user/{id}/delete','destroy')->middleware('auth');
Route::get('user/{id}','show')->middleware('auth');
});
更多關于路由引數
編輯:您可能還想看看Resource Controllers。類似的東西Route::resource('users', UserController::class);將管理所有必需的路線
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/435153.html
