路由:

  • 路由:是将信息从源地址传递到目的地得角色
  • 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. 2018-2019-2 20165236郭金涛《网络对抗》Exp1 PC平台逆向破解

    2018-2019-2 20165236郭金涛<网络对抗>Exp1 PC平台逆向破解 一.实验内容 1.掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码(0.5分) 2.掌 ...

  2. supervise守护进程

    通过二进制supervise文件可以直接对进程进行守护 ./supervise -f  要守护的程序 -p  守护信息存储位置 例如: ./supervise -f  http_server -p s ...

  3. 使用微软自带 SharpZipLib 进行多文件 压缩

    /// <summary> /// 指定路径打包下载 /// </summary> /// <param name="fileName">< ...

  4. Bukkit私人背包实现

    json数据格式为: 1. JsonFileUtil.java package com.sklm.lhb.json; import java.io.File; import java.io.FileO ...

  5. Python练习--普通函数与递归函数求阶乘

    '''Created on 2018年10月28日递归函数示例:阶乘'''def my_fun_example1(n):    '''    非递归函数求阶乘示例    '''    result = ...

  6. Git 命令及git服务器

    Linux 服务器上安装git yum -y install git git config  --global user.name "name" git config  --glo ...

  7. JD-GUI反编译出现ERROR

    反编译Jar包一般使用JD-GUI工具,很方便.但有时会出现异常,如下: 此时,可以辅助使用另一个工具来反编译代码:Luyten(https://github.com/deathmarine/Luyt ...

  8. keil在线烧录突然提示 No target connected #

    keil在线烧录突然提示 No target connected 运行环境 IDE:keil uvsion5 微处理器:STM32F0xx 系列 烧录器:ST-LINK/V2 问题描述 烧录新程序并进 ...

  9. AIM Tech Round 5 (rated, Div. 1 + Div. 2) (A, B, E)

    B.Unnatural Conditions 题目链接 : http://codeforces.com/contest/1028/problem/B #include<iostream> ...

  10. MIUI系统如何获取ROOT权限

    MIUI系统有么好方法启用了Root超级权限?各位都清楚,Android手机有Root超级权限,一旦手机启用了root相关权限,就能够实现更多的功能,举例子,各位公司的营销部门的同事,使用大多数营销工 ...