laravel 中间件添加、注册、使用

添加:

在app/Http/Middleware/下面新增中间件例如:app/Http/Middleware/Huodong.php

namespace App\Http\Middleware;

use Closure;

class Huodong
{

    //handle 是固定方法。
    public function handle($request,Closure $next)
    {
       if (time() < strtotime('2017-06-28')) {
            return redirect('member/huodong');
       }
       return $next($request);

       //$next 后面执行的逻辑 叫后置操作。
    }


}

中间件注册

app/Http/Kernel.php

 protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'can' => \Illuminate\Foundation\Http\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'huodong'  => \App\Http\Middleware\Huodong::class,   //这个是新增
    ];
}

中间件使用,在路由中增加

Route::get('member/huodong',['uses' => [email protected]']);

//这个是中间件
Route::group(['middleware' => ['huodong']],function(){
    Route::get('member/huodong1',['uses' => [email protected]']);
});

 

laravel 输出json以及重定向

$data = ['name'=>'xiaobai','age'=>18,'sex'=>'男'];
        //返回json类型数据
        return response()->json($data);


        //重定向,页面跳转
        //传入网址跳转
        return redirect('muban');

        //带参数跳转
        return redirect('muban')->with('message','这里是数据');

        //跳转到指定方法里面
        return redirect()->action([email protected]');
        //跳转到指定别名
        return redirect()->route('session1')->with('message','这里是数据');
        //返回来源页
        return redirect()->back();

 

Laravel session

//1.http request session
        $request->session()->put('key1','value1');
        $request->session()->get('key1');

        //2.session()帮助函数
        session()->put('key2','value2');
        session()->get('key2');

        //3.session 需要引入use Illuminate\Support\Facades\Session;
        Session::put('key3','value3');
        //如果key3不存在则返回default
        echo Session::get('key3','default');
        //以数组的形式存数据
        Session::put(['key4'    =>  'value4']);

        //存入数组

        Session::push('name','xiaobai');
        $res = Session::get('name');
        //取出数据后删除该条数据
       $res = Session::pull('age',18);
        //取出所有记录
        $res = Session::all();
        //判断key是否存在
        if (Session::has('key1')) {
            echo '存在';
        }else{
            echo '不存在';
        }
        //删除指定key
        Session::forget('key1');
        //清空session
        Session::flush();
        //暂存数据  存储后,只要访问一次就会自动销毁
        Session::flash('num','2');

 

laravel 控制器之Request

在使用Request之前首先需要在控制器引入

use Symfony\Component\HttpFoundation\Request;

控制器:

//取值
        echo $request->input('name');
        echo $request->input('sex','数据不存在');

        if ($request->has('sex')) {
            echo $request->input('sex');
        }else{
            echo '没有这个参数';
        }
        //获取全部数据
        $res = $request->all();


        //请求类型
        echo $request->method();

        //判断请求类型
        if ($request->isMethod('post')) {
            echo 'yes';
        }else{
            echo 'no';
        }
        //判断请求类型是否为ajax
        $res = $request->ajax();
        var_dump($res);
        //判断请求路径是否符合指定规则
        $res = $request->is('member/*');
        var_dump($res);

 

Laravel模板中生成URL

URL('地址')
action([email protected]')
route('别名') 

例如:

<a href="URL('test')">链接</a>
<a href="action([email protected]')">链接</a>
<a href="route('别名')">链接</a>

 

Laravel 模板之流程控制

控制器:

public function test ()
    {
        $data = ['name' =>  'xiaobai','age' =>  29];
        $name = 'xiaobai';
        $list = Student::get();
        return view('test.demo',[
            'info'    =>  $data,
            'name'    =>  $name,
            'list'    =>  $list
        ]);
    }

视图:

{{--流程控制--}}
    @if ($name == 'xiaobai')
        yes
    @elseif ($name == 'xiaohei')
        xiaohei
    @else
        default
    @endif

    <br>
    @if (in_array($name,$info))
        yes
    @else
        no
    @endif

    <br>
    {{--跟if 相反,比如下面这个判断,如果是if那么是成立的,但是unless则相反--}}
    @unless($name == 'xiaobai')
        yes
    @endunless

    <br>
    @for($i=0;$i<3;$i++)
        <p>{{$i}}</p>
    @endfor

    <br>
    @foreach($list as $v)
        <p>{{$v->name}}</p>
    @endforeach

    @forelse($list as $v)
        <p>{{$v->name}}</p>
    @empty
        <p>如果$list为空的话则显示这里</p>
    @endforelse

 

Laravel 变量输出以及引入子视图

控制器:

public function demo ()
    {
        $data = ['name' =>  'xiaobai','age' =>  29];
        $name = 'xiaobai';
        return view('test.demo',['info'    =>  $data,'name'    =>  $name]);
    }

视图:

@extends('layouts')

@section('header')
    @parent
header
@stop

@section('content')
    @parent
    {{--模板中输出变量--}}
    {{$info['name']}}
    {{--模板中输出php函数--}}
    <p>{{time()}}</p>
    <p>{{date('Y-m-d H:i:s',time())}}</p>
    <p>{{var_dump($info)}}</p>
    <p>{{ in_array($name,$info) ? '在' : '不在' }}</p>
    <p>{{ isset($name) ? $name : '默认值' }}</p>
    <p>{{ $name1 or '默认值' }}</p>

    {{--原样输出--}}
    <p>@{{ $name }}</p>

    {{--引入子视图--}}
    @include('test.message',['message'  =>  '信息输出'])
@stop

子视图:

<p>我是子继承{{$message}}</p>

 

 

Larave 模板继承

/resources/views/layouts.blade.php
//模板文件
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>TEST DEM @yield('title')</title>
    <style type="text/css">
        body{
            margin: 0;
            padding: 0;
        }
        .header{
            width: 100%;
            height: 69px;
            margin-bottom: 10px;
            background-color: #5bc0de;
        }
        .nav{
            width: 100%;
            margin-bottom: 10px;
            height: 300px;
        }
        .sidebar{
            width: 30%;
            height: 100%;
            float: left;
            background-color: #5bc0de;
        }
        .content{
            width: 65%;
            height: 100%;
            float: right;
            background-color: #5bc0de;
        }
        .footer{
            width: 100%;
            height: 50px;
            background-color: #5bc0de;
        }
    </style>
</head>
<body>
<div class="header">
    @section('header')
    头部
    @show
</div>
<div class="nav">
    <div class="sidebar">
        @section('sidebar')
        侧边栏
        @show
    </div>
    <div class="content">
        @yield('content','内容')

    </div>
</div>

<div class="footer">
    @section('footer')
    底部
    @show
</div>
</body>
</html>

 

/resources/views/demo/test.php
//该文件继承layouts.blade.php文件
//继承文件
@extends('layouts')
//重写
@section('header')
   /继承模板文件里面的内容
    @parent
header
@stop

 

Laravel ORM操作CURD

//ORM 查询全部
        $ret = Student::all();
        //ORM查询指定id
        $ret = Student::find(1);
        //ORM查询指定ID 如果没找到则抛出错误
        $ret = Student::findOrFail(9);
        //ORM配合构造器使用
        $ret = Student::where('id','>',1)
            ->orderBy('age','desc')
            ->first();

        //使用模型新增数据
        $model = new Student();
        $model->name = 'xiaok';
        $model->age = 80;
        $ret = $model->save();
        //根据ID查询
        $ret = Student::find(4);
        //如果是这样的话会报错,系统禁止批量插入。需要在对应的模型里面增加$fillable属性
        $ret = Student::create(
            ['name' =>  'new','age' =>  1]
        );
        //根据条件查询对应的数据,如果没有则直接新增。
        $ret = Student::firstOrCreate(
            ['name' =>  'xiaobai']
        );
            //根据条件查询,如果没有则返回查询的条件内容
            $ret = Student::firstOrNew(
                ['name' =>  'xiaobaik']
            );
            //配合save也可以达到新增
            $ret->save();

            //通过模型更新数据
        $student = Student::find(5);
        $student->age = 11;
        $ret = $student->save();
        //配合构造器更新数据
        $ret = Student::where('id','>',4)->update(
            ['age'  =>  86]
        );

            //通过模型删除数据
        $student = Student::find(6);
        $ret = $student->delete();

            //通过主键删除
        $ret = Student::destroy(5);
        //可是直接写
        $ret = Student::destroy(5,6);
        //可以是数组
        $ret = Student::destroy([5,6]);
        //配合构造器使用
        $ret = Student::where('id','>=',4)->delete();

 

Laravel 构造器操作CURD

//插入数据,返回布尔值
        $bool = DB::table('student')->insert(
            ['name' => 'xiaohei','age'  =>  37]
        );

        //插入数据,返回ID键值
        $id = DB::table('student')->insertGetId(
            ['name' =>  'sky','age' =>  100]
        );

        //插入多条数据
        $bool = DB::table('student')->insert([
            ['name' =>  'xiaoxiaobai','age' =>  12],
            ['name' =>  'xiaoj','age'   =>  18]
        ]);


       // 自增,默认是1,后面可以跟置顶值,如:increment('age',3),那么会自增3
        $num = DB::table('student')->increment('age');

        //自减
        $num = DB::table('student')->decrement('age');

        //带条件的自减
        $num = DB::table('student')
            ->where('id',1)
            ->decrement('age');

       // 在自减的同时修改name值
        $num = DB::table('student')
            ->where('id',1)
            ->decrement('age',2,['name'=>'updateok']);

        //删除置顶数据
        $num = DB::table('student')
            ->where('id',6)
            ->delete();

       // 带判断的条件删除
        $num = DB::table('student')
            ->where('id','>=',4)
            ->delete();

        //清空数据表,不返回任何值
        DB::table('student')->truncate();

        //查询全部
        $result = DB::table('student')->get();

        //查询一条
        $result = DB::table('student')
            ->orderBy('id','desc')
            ->first();
       // 条件查询
        $result = DB::table('student')
            ->where('id','>=',1)
            ->get();
       // 多条件查询
        $result = DB::table('student')
            ->whereRaw('id >= ? and age > ?',[1,23])
            ->get();
       // 查询单个字段
        $result = DB::table('student')
            ->pluck('name');
       // 查询指定字段,并使用ID作为下标
        $result = DB::table('student')
            ->lists('name','id');
           // 查询指定字段
            $result = DB::table('student')
                ->select('id','name','age')
                ->get();
       // 分段查询数据。如果要结束查询只要return false
        DB::table('student')->chunk(1,function($result){
                dd($result);
        });
            //统计多少条数据
            $num = DB::table('student')->count();
            //查询指定字段的最大值
            $num = DB::table('student')->max('age');
            //查询指定字段的最小值
            $num = DB::table('student')->min('age');
            //统计指定字段的平均值
            $num = DB::table('student')->avg('age');
            //统计自定字段的总和
            $num = DB::table('student')->sum('age');