[英]Laravel routes same url but different name
我是 Laravel 的新手,我正在嘗試制作 function 來創建數據庫行,但我的路線不起作用。 我目前在我的 web.php 文件中有這個:
Route::get('/admin/pagina', [PaginaOverzichtController::class, 'index'])
->name('Admin_Pagina_Overzicht')
->middleware('auth');
Route::post('/admin/pagina', [PaginaOverzichtController::class, 'CreatePage'])
->name('Admin_Pagina_CreatePage')
->middleware('auth');
Route::post('/admin/pagina', [PaginaOverzichtController::class, 'DeletePage'])
->name('Admin_Pagina_DeletePage')
->middleware('auth');
但是當我 go 到 /admin/pagina 時,我得到一個Route [Admin_Pagina_CreatePage] not defined
錯誤。
我是否允許在同一個 controller 中擁有相同的 URL 但指向不同 function 的不同名稱? 如果沒有,是否有最佳實踐方法來做到這一點?
^ 我的頁面上有一個表單,應該使用 post 和 action {{ route('Admin_Pagina_CreatePage') }}
方法創建一個頁面
我是否允許在同一個 controller 中擁有相同的 url 但指向不同 function 的不同名稱?
否。在確定 Laravel 路由中的唯一性時,HTTP 方法和 URI 充當組合主鍵。 其他所有內容都只是附加到該唯一條目的元數據。
在您的示例中,第二個Route::post('/admin/pagina')
覆蓋了第一個,因為您已經定義了相同的“ID”對POST /admin/pagina
。
我不確定您如何期望將相同的 HTTP 方法和 URI go 用於兩個單獨的 controller 操作。 如果您希望根據請求正文中包含的內容對它們進行不同的路由,這與 Laravel 的路由工作方式相沖突(在不使用請求正文的情況下找到並分派路由)。
通常對於刪除,您將在路由中使用該 HTTP 方法:
Route::delete('/admin/pagina' [/* ... */]);
這可以與表單方法欺騙配對,以欺騙正常的表單請求(不支持DELETE
)以找到合適的路由。
與您的問題無關,這只是一個建議,您可以使用路由組並將中間件分配給該組,以避免重復為每個路由分配一個中間件。
例如
Route::middleware(['auth'])->group(function(){
Route::get('/admin/pagina', [PaginaOverzichtController::class, 'index'])->name('Admin_Pagina_Overzicht');
Route::post('/admin/pagina', [PaginaOverzichtController::class, 'CreatePage'])->name('Admin_Pagina_CreatePage');
Route::post('/admin/pagina', [PaginaOverzichtController::class, 'DeletePage'])->name('Admin_Pagina_DeletePage');
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.