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}