[英]laravel - how to add prefix in all url without affecting route existing
我有這樣的網址mysite.com/company
,我想為網址添加前綴以成為mysite.com/home/company
。
我試圖添加一個路由組,但這需要我更新所有現有的路由。
我可以在所有 url 中添加前綴而不影響現有路由嗎?
我使用了 Laravel 5.6
我創建了一個沙箱,以便您可以查看和使用用於此答案的代碼。
我知道沙箱使用不同的 Laravel 版本(版本 7),但是查看 5.6 版的文檔,路由似乎與版本 7 的路由沒有太大區別。
您可以做的是將已經存在的路由包裝在一個匿名函數中並將其分配給一個變量,然后您可以使用此變量並將其作為參數與prefix
一起傳遞給group
路由函數,例如
$routes = function() {
Route::get('company', function () {
return 'companies';
});
Route::get('company/{company}', function ($company) {
return "company $company";
});
Route::delete('company/{company}', function ($company) {
return "deleting company $company...";
});
Route::get('company/{company}/staff', function ($company) {
return "staff list for company $company...";
});
};
Route::prefix('/')->group($routes);
Route::prefix('/home')->group($routes);
運行php artisan route:list
,將返回以下內容:
+--------+----------+------------------------------+------+---------+------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+----------+------------------------------+------+---------+------------+
| | GET|HEAD | api/user | | Closure | api |
| | | | | | auth:api |
| | GET|HEAD | company | | Closure | web |
| | GET|HEAD | company/{company} | | Closure | web |
| | DELETE | company/{company} | | Closure | web |
| | GET|HEAD | company/{company}/staff | | Closure | web |
| | GET|HEAD | home/company | | Closure | web |
| | GET|HEAD | home/company/{company} | | Closure | web |
| | DELETE | home/company/{company} | | Closure | web |
| | GET|HEAD | home/company/{company}/staff | | Closure | web |
+--------+----------+------------------------------+------+---------+------------+
您可以在上面看到路由現在可以通過/
和home/
訪問,例如http://example.com/company
和http://example.com/home/company
無需復制路由。
如果以后需要添加更多前綴,只需添加一個新的Route::prefix("<prefix>")->group($routes);
到路由文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.