Laravel 4 使用正则表达式的Laravel高级路由

Laravel 4 使用正则表达式的Laravel高级路由,laravel-4,Laravel 4,我正在尝试制定有条件的路线,以便: api/users/1-3 api/用户/1+3 api/用户/1,2,3 所有路线分开 我有: Route::get('users/{ids}', function($ids) { echo 'Commas'; })->where('ids', '[\d,]+'); Route::get('users/{ids}', function($ids) { echo 'Ranges'; })->where('ids',

我正在尝试制定有条件的路线,以便:

api/users/1-3 api/用户/1+3 api/用户/1,2,3

所有路线分开

我有:

Route::get('users/{ids}', function($ids)
{
    echo 'Commas';
})->where('ids', '[\d,]+');

Route::get('users/{ids}', function($ids)
{
    echo 'Ranges';        
})->where('ids', '[\d-]+');

Route::get('users/{ids}', function($ids)
{
    echo 'Id plus n';
})->where('ids', '[\d+]+');  
每一个都可以正确地单独工作,但是当我尝试将它们一起使用时,只有最后一个(它们可以重新排列以产生相同的效果)可以工作,另外两个抛出“NotFoundHttpException”错误


感谢您的帮助

您不能对参数使用相同的名称,因为现在,您将用最后一个注册的规则覆盖所有以前的正则表达式规则。发生这种情况是因为它们都引用相同的路线:

Route::get('users/{csids}', function($csids)
{
    echo 'Commas';
})->where('csids', '[\d,]+');

Route::get('users/{rangeids}', function($rangeids)
{
    echo 'Ranges';        
})->where('rangeids', '[\d-]+');

Route::get('users/{plusids}', function($plusids)
{
    echo 'Id plus n';
})->where('plusids', '[\d+]+');  

当然一直盯着我真实的正则表达式,以为有罪