簡體   English   中英

Laravel路由變量

[英]Laravel Route Variables

在Laravel中,如果我有兩條或更多條路線,例如:

Route::get('/{username}', 'UsersController');
Route::get('/{album}', 'AlbumsController');

並且用戶請求了一個類似www.example.com/foo的頁面,那么Laravel將如何確定用戶是否選擇了用戶個人資料或相冊頁面。

它不會-Laravel無法知道哪個-因此您無法做到這一點。

你需要做你的路線

Route::get('/user/{username}', 'UsersController');
Route::get('/album/{album}', 'AlbumsController');

可以做到這一點的唯一另一種方法是,如果可能沒有用戶名匹配foo -你可以有它嘗試專輯名為foo -但你遇到的其他問題-就像如果有什么用戶名和專輯同名.. 。

可以做您想做的事,但是這確實是一個壞習慣。 幾個月后查看代碼后,它將使用戶和您自己感到困惑。

#btw, this is in laravel 5 

Route::any('foo', function($verb)
{
    switch($verb)
    {
        case 'album':
        return view('somepage');

        case 'user':
        return view('some_user');

        default:
        return view('randompage');
    }
});

我可能將代碼做錯了,但沒有進行測試。 但是你明白了。

編輯:剛剛測試,不可能。 除了一個壞主意。

為什么不只是按預期的方式構造URL? 資源名稱和標識符(即albums/{album_id} )。

如果用戶創建與用戶同名的相冊會怎樣? 您的應用程序如何區分兩者? 如果添加其他對象類型(如事件)怎么辦。 不可能假設應用程序中的每個對象都有一個不沖突的名稱。

停止嘗試違反常規,僅按照約定構造URL。 這將使您免於開發中的許多麻煩。

暫無
暫無

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

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