簡體   English   中英

laravel - 如何在不影響現有路由的情況下在所有 url 中添加前綴

[英]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/companyhttp://example.com/home/company無需復制路由。

如果以后需要添加更多前綴,只需添加一個新的Route::prefix("<prefix>")->group($routes); 到路由文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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