Laravel框架路由讲解与中间件的使用


路由文件:/routes/web.php

<?php

use Illuminate\Support\Facades\Route;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
    return view('welcome');
});

/**
 * 常用的路由方法
 */

# GET 方式,除了GET方式,其他方式的路由都需要在 VerifyCsrfToken 添加白名单
Route::get('lyget', function () {
    return '路由GET方法';
});

# POST 方式
Route::post('lypost', function () {
    return '路由POST方法';
});

# match 方法,限定什么方式访问
Route::match(['get','post'],'lymatch', function() {
    return '路由Match方法';
});

# any 方法,任意方式都可以访问,除了 GET 方法外,其他方法都需要添加白名单
Route::any('lyany',function(){
    return '路由any方法';
});


/**
 * 路由参数
 */

# get 方式,带参数
Route::get('lygetcs1/{name}',function($name){
    return $name;
});

# get 方式,多个参数,function 内不按名称只按顺序排列
Route::get('lygetcs2/{name}/{age}',function($cs1,$cs2){
    return '我是'.$cs1.',今年'.$cs2.'岁了。';
});

# get 方式,可选参数在后面加?,如果URL上面不给参数 function 内的变量需要加默认值
Route::get('lygetcs3/{name?}/{age?}',function($name='',$age=''){
    return '第一个参数:'.$name.';第二个参数:'.$age;
});

# 如果参数内有必要的参数,那么在必要的参数前的可选参数也需要给值
Route::get('lygetcs4/{name?}/{sex}/{age?}',function($name='',$sex,$age=''){
    return '第一个参数:'.$name.';第二个参数:'.$sex.';第三个参数:'.$age;
});


/**
 * 路由参数匹配
 */

# 规定 name 值是大写的 A - Z 的字母
Route::get('lypp1/{name}',function($name){
    return '我叫'.$name;
})->where('name','[A-Z]+');

# 规定 name 值是小写的 a - z 的字母,age 值是 0 - 2 的数字
Route::get('lypp2/{name}/{age}',function($name,$age){
    return '我叫'.$name.';今年'.$age;
})->where('name','[a-z]+')->where('age','[0-2]+');
# 与上面的一样表达方式,只是 where 条件使用数组的形式
Route::get('lypp3/{name}/{age}',function($name,$age){
    return '我叫'.$name.';今年'.$age;
})->where(['name'=>'[a-z]+','age'=>'[0-2]+']);


/**
 * 路由全局约束
 */

# 1.找到路径:app/Providers/RouteServiceProvider.php
# 2.在 boot 方法里面添加全局约束 Route::pattern('name','[A-Z]+'); 限定name值为大写的 A-Z
Route::get('lyqj1/{name}',function($name){
    return '我叫:'.$name;
});

# 两个全局方法都测试,都是被限定name值为大写的 A-Z
Route::get('lyqj2/{name}',function($name){
    return '我叫:'.$name;
});


/**
 * 路由组
 */

# 路由组就是把 lyz1  lyz2  lyz3  的方法包含在 admin 内组成一个组
# 访问需要经过 admin(名称自定义) ,否则访问不了,例如:laravel.com/admin/lyz1
Route::prefix('admin')->group(function(){

    Route::get('lyz1',function(){
        return "我是路由组 one";
    });

    Route::get('lyz2',function(){
        return "我是路由组 two";
    });

    Route::get('lyz3',function(){
        return "我是路由组 three";
    });

});


/**
 * 路由名
 */

# 1. 将 lym1 的路由方法定义一个名称为 lym
# 2. 访问 lym2 的重定向到路由名,将会跳转到 lym1 路由方法去
Route::get('lym1',function(){
    return "我是通过路由名访问的";
})->name('lym');

Route::get('lym2',function(){
    return redirect()->route('lym');
});


/**
 * 路由名前缀
 */

# 1.定义一个路由名前缀组,admin 建议加个 . 或 _ ;容易区分
Route::name('admin.')->group(function(){

    Route::get('lymqz1',function(){
        return "我是路由名前缀 one";
    })->name('lyms1');

    Route::get('lymqz2',function(){
        return "我是路由名前缀 two";
    })->name('lyms2');

    Route::get('lymqz3',function(){
        return "我是路由名前缀 three";
    })->name('lyms3');

});

# 然后通过 lymcc 重定向到路由名
Route::get('lymcc',function(){
   return redirect()->route('admin.lyms2');
});


/**
 *路由域名检测
 */

Route::domain('baidu.com')->group(function(){

    Route::get('lyym1',function(){
        return "路由域名检测";
    });

});

# 访问需要域名为:blog.com ; 例如:blog.com/admin/lysz
Route::group(['prefix'=>'admin','domain'=>'blog.com'],function(){

    Route::get('lysz',function(){
        return "数组方式检测";
    });

});



/**
 * 中间件路由
 * 使用到中间件的路由,可以在中间件里面做一些限制操作
 */

# 1. 创建中间件:php artisan make:middleware 中间件名称(Test)
# 2. 编写中间件:要写到 return $next($request); 之前
# 3. 注册中间件  blog\app\Http\Kernel.php 的$routeMiddleware中注册对应的中间件
# 4. 使用中间件: 中间件别名(test)

Route::middleware('test')->group(function(){

    Route::get('lyzjj',function(){
        return "路由中间件";
    });

});



中间件文件:app/Http/Middleware/Test.php

<?php

namespace App\Http\Middleware;

use Closure;

class Test
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        echo 'Test 路由中间件检测点';

        return $next($request);
    }
}


注册中间件文件:app/Http/Kernel.php

注意:这边定义的 test 名称与使用中间件名称一致
在这里插入图片描述




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Laravel是一个免费、开源的PHP Web应用程序框架。它的设计目标是使开发任务更加简单,快捷,同时也提供了很多有用的功能。Laravel是一种使用MVC(模型-视图-控制器)架构模式的框架。它使用Composer作为依赖管理器,提供了很多预制的功能,如用户认证、路由、会话管理等等,这些都可以让我们更快地构建Web应用程序。 Laravel框架的主要特点包括: 1. 良好的路由系统:Laravel提供了非常方便的路由系统,可以轻松地定义请求URI(统一资源标识符)的处理逻辑。通过定义路由,我们可以将不同的请求分配给不同的控制器进行处理,从而实现应用程序的功能。 2. 数据库迁移:Laravel框架提供了非常方便的数据库迁移功能。它可以帮助我们轻松地创建和管理数据库表格。我们可以通过编写迁移文件定义表格结构,然后运行迁移命令来创建或更新数据库表格。 3. Blade模板引擎:Laravel框架提供了非常方便的Blade模板引擎,可以帮助我们轻松地创建模板文件。Blade模板引擎提供了很多有用的特性,如模板继承、条件判断、循环等等,可以帮助我们快速构建应用程序的前端界面。 4. Eloquent ORM:Laravel框架提供了非常方便的Eloquent ORM(对象关系映射)功能,可以帮助我们轻松地操作数据库。使用Eloquent ORM,我们可以通过PHP代码来操作数据库,而不需要编写SQL语句。 5. 自动化测试:Laravel框架提供了非常方便的自动化测试功能。我们可以编写测试用例来测试应用程序的各个部分,从而确保应用程序的质量和稳定性。 总之,Laravel框架是一个非常强大和灵活的PHP框架,可以帮助我们快速地构建高质量的Web应用程序。如果你想学习Laravel框架,我们可以通过官方文档和教程来学习。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值