簡體   English   中英

Laravel 路由相同 url 但名稱不同

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM