Laravel5.1 路由(二)

昨天写了一篇Laravel的路由笔记,Laravel的路由还有很多功能,我今天继续学一些路由的知识

重定向

我们可以使用redirect方法来实现重定向,我们来看一个简单的重定向:

Route::get('/user/{id}', function ($id){
    if ($id <= 0){
        return redirect('/');
    } else {
        return 'hello';
    }
});

当满足一些逻辑后,使用redirect跳转到别的视图。

 

路由命名

路由命名就是为路由起一个名字,这样我们在重定向时 可是使用路由的名字,就不用输入那些复杂的路径了。使用 as 关键字来为路由命名:

// 把第二个参数改成一个数组,里面指定一些键值配置,和一个闭包。
Route::get('/hello/laravel',['as' => 'laravel',function(){
    return 'Hello Laravel';
}]);

// 生成一个测试重定向的路由
Route::get('/test/redirect',function (){
    // 我们在跳转时,只需要在route方法中传入路由名就可以实现跳转。
    return redirect()->route('laravel');
});

在实际开发中 我们或许会在重定向时为路由传入参数,可以这么写:

 

路由分组

路由分组给我们带来了很多便利,当一些路由具有相同的属性时,我们可以使用路由分组将他们包含起来,路由的属性有:

  • 中间件
  • 路由前缀
  • 子域名
  • 命名空间

其中中间件和命名空间在之后的章节中做记录,我们先来看看路由前缀和子域名的使用。

子域名

子域名我们可以使用domain来声明:

// 定义一个路由分组,domain传进一个参数:
Route::group(['domain'=>'{service}.laravel.app'], function (){
    Route::get('/write/laravel', function ($service){
        return "Write FROM {$service}.laravel.app";
    });
    Route::get('/update/laravel', function ($service){
        return "Update FROM {$service}.laravel.app";
    });
});

当我们在浏览器中访问:http://write.laravel.app:8000/write/laravel 时,则会输出:

Write FROM write.laravel.app

当我们访问:http://update.laravel.app:8000/update/laravel 时,输出:

Update FROM update.laravel.app

注意:我们要让子域名生效 需要在hosts文件中绑定IP地址。

 

路由前缀

我们使用prefix来指定路由前缀:

Route::group(['prefix' => 'laravel'], function (){
    Route::get('/write', function (){
        return 'Write laravel';
    });
    Route::get('/update', function (){
        return 'Update laravel';
    });
});

这样的话我们只需要访问:localhost:8000/laravel/write 和 localhost:8000/laravel/update 即可。

 

有些时候 我们还可以指定带参数的prefix:

Route::group(['prefix' => 'laravel/{version}'], function (){
    Route::get('/write', function ($version){
        return 'Write laravel' . $version;
    });
    Route::get('/update', function ($version){
        return 'Update laravel' . $version;
    });
});

 

posted @ 2017-02-23 11:34  Alex_sun  阅读(2406)  评论(0编辑  收藏  举报