Laravel 4中的Route::group如何设置正则表达式参数约束?
How to set regular expression parameter constraints for Route::group in Laravel 4?
对于我知道的简单路由,我可以使用 where
语句。但是 Route::group() prefix
中的参数呢
<?php
Route::get('user/{id}', 'UserController@profile')->where('id', '[0-9]+');
Route::group(['prefix' => 'foo/{bar}'], function() {
// ...
})->where('bar', '[0-9a-Z]+'); // this won't work
开箱即用的 laravel 路由器不支持此功能。您可以使用 Enhanced Router package from Jason Lewis or a fork that enables support for Laravel 4.2
或者你也可以自己做。您基本上可以将 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');
我正在使用 laravel 5.5。我遇到了同样的问题,在搜索中找到了这个问题。
我尝试使用@lukasgeiter 定义的解决方案并遇到问题:
的价值
$group->getRoutes()
不仅是当前组的路由。
但是我通过在路由组定义中指定条件解决了我的问题。
Route::group([
'prefix' => 'foo/{bar}',
'where' => ['bar' => '[0-9a-Z]+']
],
function() {
// ...
});
它对我有用:)
对于我知道的简单路由,我可以使用 where
语句。但是 Route::group() prefix
<?php
Route::get('user/{id}', 'UserController@profile')->where('id', '[0-9]+');
Route::group(['prefix' => 'foo/{bar}'], function() {
// ...
})->where('bar', '[0-9a-Z]+'); // this won't work
开箱即用的 laravel 路由器不支持此功能。您可以使用 Enhanced Router package from Jason Lewis or a fork that enables support for Laravel 4.2
或者你也可以自己做。您基本上可以将 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');
我正在使用 laravel 5.5。我遇到了同样的问题,在搜索中找到了这个问题。
我尝试使用@lukasgeiter 定义的解决方案并遇到问题:
的价值
$group->getRoutes()
不仅是当前组的路由。
但是我通过在路由组定义中指定条件解决了我的问题。
Route::group([
'prefix' => 'foo/{bar}',
'where' => ['bar' => '[0-9a-Z]+']
],
function() {
// ...
});
它对我有用:)