Beh*_*dsh 3 regex routes laravel laravel-4 laravel-routing
对于简单的路线我知道我可以用户where声明.但是Route :: group()前缀中的参数如何呢?
<?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
Run Code Online (Sandbox Code Playgroud)
Emi*_*efi 10
我正在使用laravel 5.5.我有同样的问题,在搜索中找到这个问题.
我试图使用@lukasgeiter定义的解决方案并面临一个问题:
值
$group->getRoutes()
不仅是当前组的路由.
但我通过在路由组定义中指定条件来解决我的问题.
Route::group([
'prefix' => 'foo/{bar}',
'where' => ['bar' => '[0-9a-Z]+']
],
function() {
// ...
});
Run Code Online (Sandbox Code Playgroud)
它对我有用:)
开箱即用的laravel路由器不支持此功能.您可以使用Jason Lewis 的Enhanced Router软件包或支持Laravel 4.2的分支
或者你可以自己做.您基本上可以将where条件添加到组内的每个路径:
Route::group(['prefix' => 'foo/{bar}'], function() {
Route::get('/', function(){
// ...
})->where('bar', '[0-9a-Z]+');
});
Run Code Online (Sandbox Code Playgroud)
或者做得更动态,并在路由组的底部添加:
Route::group(['prefix' => 'foo/{bar}'], function($group) {
// ...
foreach($group->getRoutes() as $route){
$route->where('bar', '[0-9a-Z]+');
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3838 次 |
| 最近记录: |