IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> Laravel学习-路由 -> 正文阅读

[PHP知识库]Laravel学习-路由

什么是路由

路由(route)是 指根据url, 分配到对应的处理程序的映射。简单来说,就是一个路径的解析,根据客户端提交的路径,将请求解析到相应的模块/控制器/方法上。

路由的定义

构建基本路由只需要一个 URI 与一个 路由地址 ,而 路由地址 可以是 闭包,也可以是控制器方法等。

Route::路由方法('路由标识', '路由地址');

# Test控制器Index方法
Route::get('index',[\App\Http\Controllers\TestController::class,'index']);

在这里插入图片描述

常见路由方法

Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);
Route::match(['get', 'post'], '/', function () {});
Route::any('/', function () {});

csrf

routes/web.php 文件用于定义 web 界面的路由。这里面的路由会被分配给 web 中间件组,它提供了会话状态和 CSRF 保护等功能。除开 get 方式可以正常访问外,其他方式都需要经过验证,如果没有验证则会报419错误。

1. 注释 VerifyCsrfToken 中间件 - 不建议;
2. VerifyCsrfToken 中间件中写入白名单 - 不建议;
3. 使用 @csrf 标签 - 建议:

路由重定向

Route::redirect ('路由标识', '被重定向的路由标识');
Route::redirect('index','hello');

在这里插入图片描述

路由视图

Route::view('路由标识', 视图名称);

在这里插入图片描述

路由参数

必填参数:

这种参数定义了必须传否则会报404错误。

Route::get('路由标识/{参数}', function($参数){
//
});
Route::get('index/{id}/{name}',function ($id,$name){
    echo 'id:'.$id."<br />";
    echo 'name:'.$name;
});

在这里插入图片描述
需要注意的是 路由参数与方法形参无关, 只与顺序有关。
在这里插入图片描述
在这里插入图片描述
可选参数:

Route::get('index/{id}/{name?}',function ($id,$name=''){
    echo 'id:'.$id."<br />";
    echo 'name:'.$name;
});

你可能需要指定一个路由参数,但你希望这个参数是可选的。你可以在参数后面加上?标记来实现,但前提是要确保路由的相应变量有默认值。

在这里插入图片描述
像这样的传参没啥限制,就如:
在这里插入图片描述
id这种类型的一般都是整数。所以这时候就可以给它加个约束。

路由约束

Route::get('index/{id}/{name?}',function ($id,$name=''){
    echo 'id:'.$id."<br />";
    echo 'name:'.$name;
})->where('id','[0-9]+');

在这里插入图片描述
在这里插入图片描述
如果你想把所有参数 id 这个都遵循同一个约束,这一样一个个加太麻烦了,可以在RouteServiceProvider 的 boot 方法中通过调用 Route 类的 pattern 方法定义这些约束.

Route::pattern('id','[0-9]+');
Route::get('index/{id}/{name?}',function ($id,$name=''){
    echo 'id:'.$id."<br />";
    echo 'name:'.$name;
});

在这里插入图片描述

路由命名

路由命名,也就是给当前路由取一个别名, 可以方便地为指定路由生成 URL 或者重定向。通过在路由定义上链式调用 name 方法可以指定路由命名。

Route::get('路由标识', function () {
})->name('路由命名');
//路由命名为named
Route::get('index',[\App\Http\Controllers\TestController::class,'index'])->name('named');
Route::get('test',function (){
//    echo \route('named');//获取url   http://www.study-laravel.com/index
    return redirect()->route('named');//重定向
});

在这里插入图片描述
如果在数组中传递额外的参数,这些键或值将自动添加到生成的 URL 的查询字符串中。

Route::get('index/{id}/{name?}',function ($id,$name=''){
    echo 'id:'.$id."<br />";
    echo 'name:'.$name;
})->name('rename');

Route::get('test',function (){
    return redirect()->route('rename',['id'=>66]);
}); 

在这里插入图片描述

路由分组

路由组:
路由组可以让属于该路由组下的路由享有相同 " 待遇 "。

1.路由前缀:
在访问同一个系列的路由时,可能会想要给这一系列的路由添加上能体现该系列的特定标识,这时候可以用 prefix 方法为路由组中给定的 URL 增加前缀。例如,为组中所有路由的 URI 加上 mytest 前缀:

Route::prefix('mytest')->group(function (){
    Route::get('index',function (){
        echo '我的测试首页';
    });
});

在这里插入图片描述
2.路由名称前缀
name 方法和 prefix 方法类似,都可以对一组路由进批量规定加内容。而路由名称前缀则是给路由名称添加前缀。

Route::name('mytest.')->group(function (){
    Route::get('index',function (){
        echo '我的测试首页';
    })->name('index1');
});
Route::get('test',function (){
    echo \route('mytest.index1');
});

在这里插入图片描述
命名空间:
在使用控制器时,一般都会给不同模块的控制器创建一个文件夹保存,而对应的在使用时也需要加入该命名空间。当多个文件都需要使用添加该命名空间时可以使用 namespace 方法来添加命名空间。

Route::namespace('mytest')->group(function () {
Route::get('login', 'LoginController@index');
Route::get('register', 'RegisterController@index');
});

上面所有的规定都是单独给定的,这些规定也可以结合起来一起给予。

通过数组方式使用

Route::group(['prefix'=>'pre', 'middleware'=>['first']],function(){
});

通过链式调用

Route::prefix('pre')->middleware('first')->group(function(){
});
  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-11-10 12:11:34  更:2021-11-10 12:11:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/14 14:25:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码