Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何为Laravel 4中的Route::group设置正则表达式参数约束?_Regex_Laravel_Laravel 4_Routes_Laravel Routing - Fatal编程技术网

Regex 如何为Laravel 4中的Route::group设置正则表达式参数约束?

Regex 如何为Laravel 4中的Route::group设置正则表达式参数约束?,regex,laravel,laravel-4,routes,laravel-routing,Regex,Laravel,Laravel 4,Routes,Laravel Routing,对于简单路线,我知道我可以使用where语句。但是Route::group()前缀中的参数呢 现成的laravel路由器不支持此功能。您可以使用Jason Lewis或 或者你可以自己做。您基本上可以将where条件添加到组内的每个路由: Route::group(['prefix' => 'foo/{bar}'], function() { Route::get('/', function(){ // ... })->where('bar', '[0

对于简单路线,我知道我可以使用
where
语句。但是Route::group()前缀中的参数呢


现成的laravel路由器不支持此功能。您可以使用Jason Lewis或

或者你可以自己做。您基本上可以将where条件添加到组内的每个路由:

Route::group(['prefix' => 'foo/{bar}'], function() {
    Route::get('/', function(){
        // ...
    })->where('bar', '[0-9a-Z]+');
});
或者做得更动态一点,并将其添加到路线组的底部:

Route::group(['prefix' => 'foo/{bar}'], function($group) {
    // ...

    foreach($group->getRoutes() as $route){
        $route->where('bar', '[0-9a-Z]+');
    }
});

在我看来,一个可能不完美的解决方案是

// Route Model Binding
Route::model('user', 'User');

// Route Constraint Pattern
Route::pattern('user', '[0-9]+');

// Route Definition
Route::get('anything/{user}', 'UserController@anyFunction');
.
.
Route::resource('user', 'UsersController');

我用的是拉威尔5.5。我遇到了同样的问题,在搜索中找到了这个问题。
我试图使用@lukasgeiter定义的解决方案,但遇到了一个问题:
价值
$group->getRoutes()
不仅是当前组的路由。

但我通过在路由组定义中指定条件修复了我的问题。


这对我来说很有效:)

这是你想用Laravel 5/6做这件事的正确方法-确认它按规定工作。
// Route Model Binding
Route::model('user', 'User');

// Route Constraint Pattern
Route::pattern('user', '[0-9]+');

// Route Definition
Route::get('anything/{user}', 'UserController@anyFunction');
.
.
Route::resource('user', 'UsersController');
Route::group([
        'prefix' => 'foo/{bar}',
        'where'  => ['bar' => '[0-9a-Z]+']
    ],
    function() {

    // ...

});