Php 拉威尔路径变量

Php 拉威尔路径变量,php,laravel,laravel-4,Php,Laravel,Laravel 4,在拉威尔,如果我有两条或两条以上的路线,比如: Route::get('/{username}', 'UsersController'); Route::get('/{album}', 'AlbumsController'); 一个用户请求了一个像www.example.com/foo这样的页面,那么Laravel将如何判断用户是否选择了用户配置文件或相册页面。不会-Laravel不可能知道是哪一个-所以你不能这样做 你需要确定你的路线 Route::get('/user/{username}

在拉威尔,如果我有两条或两条以上的路线,比如:

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
-但随后你会遇到其他问题-例如,如果用户名和相册具有相同的名称会怎么样…

它不会-拉威尔不可能知道是哪个-所以你不能这样做

你需要确定你的路线

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');
    }
});
我可能做了错误的代码,但没有测试它。但你明白了


编辑:刚刚测试过,不可能。除此之外,这是一个坏主意。

你可以做你想做的事,但这确实是一个坏习惯。几个月后查看代码后,用户和您自己都会感到困惑

#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\u id}

如果用户创建与用户同名的相册,会发生什么情况?您的应用程序将如何区分这两者?如果添加其他对象类型(如事件),该怎么办。不可能假设应用程序中的每个对象都有一个不冲突的名称


不要试图违背规则,只需按照惯例构造URL即可。这将为您在开发过程中省去很多麻烦。

为什么不按照预期的方式构造URL呢?资源名称和标识符(即
albums/{album\u id}

如果用户创建与用户同名的相册,会发生什么情况?您的应用程序将如何区分这两者?如果添加其他对象类型(如事件),该怎么办。不可能假设应用程序中的每个对象都有一个不冲突的名称


不要试图违背规则,只需按照惯例构造URL即可。这将为您在开发过程中省去很多麻烦。

好的。这意味着我可以将其仅用于用户名,并将相册前缀添加到下一个。在《拉维5》中有解决方案吗?没有“解决方案”,也永远不会有。如果您键入
yourdomain.com/foo
,则不可能知道用户想要做什么,除非您有特定的规则(如用户名的regex或其他)。老实说-没有理由不使用
/user
/album
-它们是非常干净的URL,看起来很不错-包括SEOGood答案,除了我更喜欢使用复数--
'users/{user}
'albums/{album}
好的。这意味着我可以将其仅用于用户名,并将相册前缀添加到下一个。在《拉维5》中有解决方案吗?没有“解决方案”,也永远不会有。如果您键入
yourdomain.com/foo
,则不可能知道用户想要做什么,除非您有特定的规则(如用户名的regex或其他)。老实说-没有理由不使用
/user
/album
-它们是非常干净的URL,看起来不错-包括SEOGood答案,除了我更喜欢使用复数--
'users/{user}
'albums/{album}