Laravel 5.3 学习系列二:路由
来源:互联网 发布:mac如何使用qq截图 编辑:程序博客网 时间:2024/05/18 03:14
- 路由文件目录
- 使用
- 基本用法
- 使用Route门面的match方法匹配多种请求方式
- 路由参数使用
- 1必选参数
- 2可选参数
- 3正则约束
- 路由命名给路由起个名字
- 1命名路由
- 2辅助函数 route 为命名路由生成 URL
- 路由分组
- 1中间件middleware
- artisan命令创建中间件
- 编辑中间件
- 中间件之前请求前执行任务
- 中间件之后请求后执行任务
- 注册中间件
- 基本middleware属性
- 中间件组middlewareGroups 属性
- 使用中间件
- 中间件参数
- 中间件中
- 路由中
- 2命名空间namespace
- 3路由前缀prefix
- 1中间件middleware
路由文件目录
routes/web.php
使用
基本用法
Route::get('/order','order\OrderController@index'); get方式传值 参数1 路由 参数2 控制器路径@方法 其路径是相对于app/Http/Controllers目录的路径
使用Route门面的match方法匹配多种请求方式
Route::match(['get', 'post'], '/order', 'order\OrderController@index');
路由参数使用
1)必选参数
Route::post('/order/{id}','');
2)可选参数
Route::post('/order/{id?}','');
3)正则约束
Route::post('/order/{id?}','')->where('name','[A-Za-z]+');;
路由命名——给路由起个名字
1)命名路由
//使用name方法Route::get('user/profile', 'UserController@showProfile')->name('profile');//as 命名路由 //uses指定 控制器@方法Route::get('user/profile', ['as' => 'profile', 'uses' => 'UserController@showProfile']);
2)辅助函数 route 为命名路由生成 URL
$redirect = redirect()->route('profile');
命名路由带参数
Route::get('user/{id}/profile', ['as' => 'profile', 'uses' => 'UseController@showProfile']);$url = route('profile', ['id' => 1]); //参数作为第二个参数传递给 route 函数
路由分组
使用Route门面的group方法
1)中间件(middleware)
过滤进入应用的 HTTP 请求
artisan命令创建中间件
php artisan make:middleware CheckAge
这个命令会在 app/Http/Middleware 目录下创建一个新的中间件类 CheckAge
编辑中间件
中间件之前(请求前执行任务)
public function handle($request, Closure $next){ //age小于等于200重定向 if ($request->input('age') <= 200) { return redirect('home'); } //继续执行 return $next($request);}
中间件之后(请求后执行任务)
public function handle($request, Closure $next){ $response = $next($request); // 执行动作 return $response;}
注册中间件
将相应的中间件类设置到 app/Http/Kernel.php 文件中
基本($middleware属性 )
protected $routeMiddleware = [//注册中间件CheckAge并分配一个key 'check' => \App\Http\Middleware\CheckAge::class,//多个单词可以用 . 连接定义key'check.age' => \App\Http\Middleware\CheckAge::class,];
中间件组($middlewareGroups 属性)
指定一个键名将相关中间件分到同一个组里面
protected $middlewareGroups = [ 'web' => [ \App\Http\Middleware\EncryptCookies::class, \Illuminate\Session\Middleware\StartSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, \App\Http\Middleware\VerifyCsrfToken::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, ], 'api' => [ ],];
使用中间件
通过数组分配
Route::group(['middleware' => ['web']], function () { Route::get('/order','order\OrderController@index');});//使用多个中间件 逗号分隔Route::group(['middleware' => ['web','check','check.age']], function () { Route::get('/order','order\OrderController@index');});
通过方法链来分配
Route::put('post/{id}','')->middleware('check');
在Controller的构造方法中调用
//Controller的构造方法public function __construct(){ //调用中间件 $this->middleware('test');}
中间件参数
中间件中
额外的中间件参数会在 $next 参数之后传入中间件,多个参数用逗号分隔
//多个参数用逗号分隔 public function handle($request, Closure $next, $age){ if (! $request->user()->hasRole($age)) { // Redirect... } return $next($request);}
路由中
中间件参数可以在定义路由时通过:分隔中间件名和参数名来指定,多个中间件参数可以通过逗号分隔
Route::group(['middleware' => ['check.age:age']], function () {});//多参数逗号分隔Route::group(['middleware' => ['check.age:age,name']], function () {});
2)命名空间(namespace)
只需指定App\Http\Controllers之后的部分即可
Route::group(['namespace' => 'Admin'], function(){// 控制器在 "App\Http\Controllers\Admin" 命名空间下
});
3)路由前缀(prefix)
Route::group(['prefix'=>'admin'],function(){ Route::get('order','order\OrderController@index'); //url 会是 admin/order});//在路由前缀中指定参数Route::group(['prefix'=>'admin/{id}'],function(){ Route::get('order','order\OrderController@index'); //url 会是 admin/5/order});
阅读全文
0 0
- Laravel 5.3 学习系列二:路由
- laravel系列4-- 路由
- laravel 二 路由
- laravel 路由使用(二)
- laravel框架学习-配置,路由
- laravel框架学习(路由)
- 1.Laravel学习点滴-路由
- Laravel 学习路线【2】路由
- Laravel-学习笔记-路由(Route)
- laravel学习笔记之路由
- Laravel学习日记2:路由
- Laravel 5.3 学习系列一:安装、配置
- Laravel入门基础教程(二)路由
- laravel 课程学习系列二----------------第二章.PHP框架安装之Laravel
- Laravel 5.1.4 + Bootstrap 3.3.5 笔记二:Laravel 路由
- Laravel学习笔记(二)---路由,CSRF,HTTP中间件,RESTFul风格控制器注册路由,视图间共享数据
- laravel-5.3(2) 路由配置
- laravel学习笔记二
- 关于Echarts中formatter实现动态数据的方法
- Virtual DOM 算法
- 你为什么想打产品经理?
- windows下安装redis 以及phpredis的扩展增对php7 (windows redis php&php7)
- ArrayList以价格排序
- Laravel 5.3 学习系列二:路由
- oracle 跨库系列问题
- CentOS6.5系统下RPM包安装MySQL5.6
- 验证文件目录的创建函数CreateDirectory();
- Hadoop与Google云架构
- 20171206_讲解PPT的灵魂
- Linux后台进程管理
- 自己动手搭建VPN服务器
- 515. Find Largest Value in Each Tree Row(C++)