路由:

  • 路由:是将信息从源地址传递到目的地得角色
  • Route::get('/test',function(){ });   //分号不能丢
  • 报错信息MethodNotAllowedHttpException in RouteController.php 说明当前得请求方式和路由规则不匹配
  • laravel框架中所有得模板文件都是存放在resources/views中
  • 模板文件得后缀名是 .blade.php
  • 错误信息TokenMismatchException in VerifyCsrfToken.php 说明当前得post请求中缺少验证信息.在每一个post表单中需要添加一个token
  • 当前路由规则中的参数名可以和匿名函数或者方法中的参数名,不保持一致.潜规则保持一致

routes.php

 <?php
//基本路由
Route::get('/',function(){
return view('welcome');
});
//路由组
Route::group([],function(){
//带参数的路由
Route::get('/user/{id}',function($ids){
echo "当前用户的id为".$ids;
}); //阻止参数的类型
Route::get('/goods/{id}',function($id){
echo "商品的详情页..当前id为".$id;
})->where('id','\d+'); //多个参数
Route::get('/{type}-{id}',function ($type,$id){ //该处的参数一定要传,不然下面无法使用这个参数
echo "我的类型是".$type."我的id是".$id;
}); //路由别名
Route::get('Admin/User/index',[
'as'=>'bieming', //as和uses是固定的,不可修改
'uses'=>function(){
echo route('bieming'); //route是一个函数,通过路由别名来快速创建完整的url
}
]); //404页面
Route::get('/404',function(){
// -------------------方式1-------------------
// abort(404);
// -------------------方式2-------------------
return view('errors.404');
});
});

中间件

中间件:过滤请求

  • 创建:php artisan make:middleware TestMiddelware
  • 默认存放目录:app\http\middelware中
  • $request是laravel框架对请求报文做的封装

使用:

  1. 创建中间件

    //创建中间件(文件位置:App\Http\Middleware)
    php artisan make:middleware LoginMiddleware
  2. 注册
    //注册分为全局注册和路由注册(位置:App\Http\Kernel.php)
    // 设置全局注册
    protected $middleware = [
    \App\Http\Middleware\TestMiddelware::class, //该句打印出来的是TestMiddelware的路径(App\Http\Middleware\TestMiddelware)
    ]; // 设置路由注册
    protected $routeMiddleware = [
    'login'=>\App\Http\Middleware\LoginMiddleware::class,
    ];
  3. 使用(全局注册不需要该步,因为全局注册是针对所有的请求)
    <?php
    //方式1
    Route::get('/setting',[
    'middleware'=>'login',
    'uses'=>function(){
    echo "这是设置页面。。。。";
    }
    ]);
    //方式2
    Route::get('/admin',function(){
    echo "这是网站的后台";
    })->middleware('login');
    }); 

示例代码:

App\Http\kernel.php

 <?php

 namespace App\Http;

 use Illuminate\Foundation\Http\Kernel as HttpKernel;

 class Kernel extends HttpKernel
{
/**
* The application's global HTTP middleware stack.
*
* @var array
*/
// 设置全局注册
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\App\Http\Middleware\TestMiddelware::class, //该句打印出来的是TestMiddelware的路径(App\Http\Middleware\TestMiddelware)
]; /**
* The application's route middleware.
*
* @var array
*/
// 设置路由注册
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'login'=>\App\Http\Middleware\LoginMiddleware::class,
];
}

app\Http\Middleware\TestMiddelware.php

 <?php

 namespace App\Http\Middleware;

 use Closure;

 class TestMiddelware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
// 记录该请求的路径
// [2018-08-08 08:08:08]127.0.0.1-------/Admin/User/index
$path='['.date('Y-m-d H:i:s') .']'.$request->ip().'-------'.$request->path();
// 将字符串路径存放到日志中
file_put_contents('request.log',$path."\r\n",FILE_APPEND);
// 进入下一层的代码执行
return $next($request);
}
}

app\Http\Middleware\LoginMiddleware.php

 <?php

 namespace App\Http\Middleware;

 use Closure;

 class LoginMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
// 检测请求是否具有session信息
if (!session('uid')) {
//跳转
return redirect('/login');
}
return $next($request);
}
}

route.php

 <?php
Route::get('/setting',[
'middleware'=>'login',
'uses'=>function(){
echo "这是设置页面。。。。";
}
]);
Route::get('/session',function(){
session(['uid'=>10]);
});
Route::get('/login',function(){
echo "这里是用户的登陆页面";
});
//网站后台
Route::get('/admin',function(){
echo "这是网站的后台";
})->middleware('login');
});

 控制器

  • 概念:控制model和view
  • 创建控制器
    //方式1
    php artisan make:controller UserController
    //方式2.创建一个空控制器
    php artisan make:controller TestController --plain(不创建类方法) 

资源控制器的访问规则:

Verb    Path                        Action  Route Name
GET /users index users.index
GET /users/create create users.create
POST /users store users.store
GET /users/{user} show users.show
GET /users/{user}/edit edit users.edit
PUT /users/{user} update users.update
DELETE /users/{user} destroy users.destroy

隐式控制器和资源控制器示例代码:

route.php

<?php
//隐式控制器
Route::controller('cmftest','TestController');
//资源控制器
Route::resource('user','UserController');
});

TestController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller; class TestController extends Controller
{
// 函数名称必须为”method+访问名称“
// 访问名称的第一次字母大写
// 访问地址:localhost:10/cmftest/test
public function getTest()
{
return "这是test函数";
}
}

UserController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller; class UserController extends Controller
{
//访问路径:http://localhost:10/user
public function index()
{
echo "index";
}
//访问路径:http://localhost:10/user/create
public function create()
{
echo "create";
}
}

脑图总结: 

脑图地址:http://naotu.baidu.com/file/f7317bc2f0f514db9e996b7705255910?token=b53e299981abe1da

laravel基础知识学习总结(路由、中间件、控制器)的更多相关文章

  1. (转)Linux基础知识学习

    Linux基础知识学习 原文:http://blog.csdn.net/ye_wei_yang/article/details/52777499 一.Linux的磁盘分区及目录 Linux的配置是通过 ...

  2. laravel基础课程---5、路由复习(路由作用)

    laravel基础课程---5.路由复习(路由作用) 一.总结 一句话总结: 有利于百度收录,及SEO优化 1.路由书写 (D:\laravel\yzmedu\yzm2\routes\web.php) ...

  3. laravel基础课程---3、路由(Laravel中的常见路由有哪几种)

    laravel基础课程---3.路由(Laravel中的常见路由有哪几种) 一.总结 一句话总结: 6种:post,get,put,patch,delete,options Route::get($u ...

  4. Vue2基础知识学习

    Vue2基础知识学习 01.初识 new Vue({ el: '#root', //用于指定当前Vue实例为哪个容器服务,值通常为css选择器符 data () { return { } } }); ...

  5. GCC基础知识学习

    GCC基础知识学习 一.GCC编译选项解析 常用编译选项 命令格式:gcc [选项] [文件名] -E:仅执行编译预处理: -S:将C代码转换为汇编代码: -c:仅执行编译操作,不进行连接操作: -o ...

  6. Objective-c基础知识学习笔记

    Objective-c基础知识学习笔记(一) 一直有记录笔记的习惯.但非常久没分享一些东西了,正好上半年開始学习IOS了,如今有空写点.因开发须要,公司特意为我们配置了几台新MAC.还让我们自学了2周 ...

  7. AXAJ基础知识学习

    AXAJ基础知识学习 博客首页 Ajax简介 ajxa全称是Asynchronous Javascript And XML ,就是异步的JS 和XML 通过Ajax可以再浏览器中向服务器发送异步请求, ...

  8. Laravel 基础知识

    使用版本Laravel5.1.======================================================目录简单介绍:app目录,核心目录,应用目录.bootstra ...

  9. Elasticsearch基础知识学习

    概要 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用Java开发的,并作为Ap ...

随机推荐

  1. 【Linux】Mac Centos install VMware Tools

    can't use yum: vi /etc/sysconfig/network-scripts/ifcfg-enp4s0 yum -y install lshw pciutils gdisk sys ...

  2. Python3.0科学计算学习之绘图(二)

    (1) np.mashgrid()函数:-----生成网络点坐标矩阵,可以是二维网络矩阵,也可以是三维网络矩阵.其中,每个交叉点就是网络点,描述这些网络点的矩阵就是坐标矩阵(横坐标矩阵X中的每个元素与 ...

  3. JavaWeb初级进阶高级学习方向计划

    阶段1 语言基础 课程一.Java负基础扫盲课 1.初识Java 本课程从java开发环境配置开始,讲解了java语法基础 .类和面向对象.面向对象编程三大特性:封装.继承.多态.建议零基础学员从本课 ...

  4. laravel----------Client error: `POST http://47.98.116.219/oauth/token` resulted in a `401 Unauthorized` response: {"error":"invalid_client","message":"Client authentication failed"}

    1.设备没有授权,原因是 这个client_id的值就是数据库wk_oauth_clients 的主键ID,查看下表是否有这条数据

  5. 一道有趣的JS问题

    function Foo() { getName = function () { alert (1); }; return this; } Foo.getName = function () { al ...

  6. 18.12.09-C语言练习:黑洞数 / Kaprekar问题

    题目: 程序: #include <stdio.h> int main(void) { int n, a, b, c, t, A, B; printf("输入一个三位数整数:&q ...

  7. CentOS 7 部署Gitlab+Jenkins持续集成(CI)环境

    持续集成概述及运行流程 : 持续集成概述 :持续集成(Continuous integration)持续集成是指开发者在代码的开发过程中 ,可以频繁的将代码部署集成到主干,并进行自动化测试  开发→代 ...

  8. 论文阅读(XiangBai——【PAMI2018】ASTER_An Attentional Scene Text Recognizer with Flexible Rectification )

    目录 XiangBai--[PAMI2018]ASTER_An Attentional Scene Text Recognizer with Flexible Rectification 作者和论文 ...

  9. WinForm中 Asp.Net Signalr消息推送测试实例

    p{ text-align:center; } blockquote > p > span{ text-align:center; font-size: 18px; color: #ff0 ...

  10. AndroidStudio 快捷键(最实用的20个)(转)

    有时候用的编辑器多了,快捷键容易记混淆,所以我门只用记最实用的快捷键就行了,其他效率不高的到要用的时候再查也不迟 下面是我使用AndroidStudio以来最常用的也是我认为最有用的20个快捷键 给大 ...