1、基本路由
所有路由都定义在app/Http/routes.php中。最基本的 Lumen 路由接收一个 URI 和一个闭包:
$app->get('foo', function () {
return 'Hello World';
});
$app->post('foo', function () {
//
});
有效的路由方法
路由器允许你注册响应任何HTTP动作的路由:
$app->get($uri, $callback);
$app->post($uri, $callback);
$app->put($uri, $callback);
$app->patch($uri, $callback);
$app->delete($uri, $callback);
$app->options($uri, $callback);
2、路由参数
必选参数
有时我们需要在路由中捕获URI片段,比如,如果想要从URL中捕获用户ID,可以通过如下方式定义路由参数:
$app->get('user/{id}', function ($id) {
return 'User '.$id;
});
可以按需要定义在路由中定义多个路由参数:
$app->get('posts/{post}/comments/{comment}', function ($postId, $commentId) {
//
});
路由参数总是通过花括号进行包裹,参数在路由被执行时会被传递到路由的闭包。
注意:路由参数不能包含’-‘字符,需要的话可以使用_替代。
3、命名路由
命名路由使生成URL或者重定向到指定路由变得很方便,在定义路由时指定路由名称,然后使用数组键as指定路由别名:
$app->get('profile', ['as' => 'profile', function () {
//
}]);
还可以为控制器动作指定路由名称:
$app->get('profile', [
'as' => 'profile', 'uses' => 'UserController@showProfile'
]);
生成指向命名路由的URL
一旦你为给定路由分配了名字,通过route函数生成URL时就可以使用路由名字:
$url = route('profile');
$redirect = redirect()->route('profile');
如果路由定义了参数,可以将路由参数作为第二个参数传递给route函数。给定的路由参数将会自动插入URL中:
$app->get('user/{id}/profile', ['as' => 'profile', function ($id) {
//
}]);
$url = route('profile', ['id' => 1]);
4、路由分组
路由分组允许我们在多个路由中共享路由属性,比如中间件和命名空间等,这样的话一大波共享属性的路由就不必再各自定义这些属性。共享属性以数组的形式被作为第一个参数传递到$app->group方法中。
要了解更多路由分组,下面我们通过几个简单的应用实例来展示其特性。
4.1 中间件
要分配中间件给分组中的所有路由,可以在分组属性数组中使用middleware键。中间件将会按照数组中定义的顺序依次执行:
$app->group(['middleware' => 'auth'], function () use ($app){
$app->get('/', function () {
// 使用 Auth 中间件
});
$app->get('user/profile', function () {
// 使用 Auth 中间件
});
});
4.2 命名空间
另一个通用的例子是路由分组分配同一个PHP命名空间给多个控制器,可以在分组属性数组中使用namespace参数来指定分组中控制器的命名空间:
$app->group(['namespace' => 'Admin'], function() use ($app){
// 控制器在 "AppHttpControllersAdmin" 命名空间下
$app->group(['namespace' => 'User'], function()
{
// 控制器在 "AppHttpControllersAdminUser" 命名空间下
});
});
默认情况下,RouteServiceProvider包含routes.php并指定其所在命名空间为AppHttpControllers,因此,我们只需要指定AppHttpControllers之后的相对命名空间即可。
4.3 路由前缀
属性prefix可以用来为分组中每个给定URI添加一个前缀,比如,你想要为所有路由URI前面添加前缀admin:
$app->group(['prefix' => 'admin'], function () use ($app){
$app->get('users', function () {
// 匹配 "/admin/users" URL
});
});
你还可以使用prefix参数为分组路由指定公共参数:
$app->group(['prefix' => 'accounts/{account_id}'], function () use ($app){
$app->get('detail', function ($account_id) {
// 匹配 accounts/{account_id}/detail URL
});
});
茶杯头甜蜜终章dlc 官方手机版v1.0.0.3
下载火柴人传说暗影格斗内置菜单 最新版v3.0.1
下载荒野乱斗测试服 安卓版v61.10.3
下载荒野乱斗彩虹服 安卓版v61.10.3
下载寒霜启示录 安卓版v1.25.10
寒霜启示录是一款生存模拟游戏,不少玩家可能对于末日都有着自己
末日城堡免广告版 安卓最新版v0.7.1
末日城堡免广告版是一款非常好玩的模拟经营类游戏,内部可以不看
甜蜜人生模拟器 最新版v1.4.5
甜蜜人生模拟器是一款非常好玩的模拟恋爱手游,玩家在这里能够对
武器锻造师内置功能菜单 v10.4
武器锻造师内置菜单版是游戏的破解版本,在该版本中为玩家提供了
开放空间overfield 安卓版v1.0.5
开放空间Overfield是一款箱庭养成经营手游,让你在广阔