laravel5.2—request,session,response,middleware

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_41179401/article/details/86607238

一 request

Illuminate\Http\Request

<?php
 
namespace App\Http\Controllers;
 
use App\Http\Controllers\Controller;
 
use Illuminate\Http\Request;
 
class MemberController extends Controller{
 
    public function info(Request $request){       // 依赖注入
     
        echo $request->input('name');             //取值
         
        echo $request->input('name','10');        //设置默认值
         
        print_r($request->all());                 //获取所有请求参数
         
        print_r($request->only(['name']));        //提取部分参数
         
        print_r($request->except(['username']));  //剔除不需要的参数
         
        print_r($request->header());              //获取请求头信息
         
        echo $request->has('name');               //判断是否有这个参数 有返回true ,没有返回false
         
        echo $request->path();                    //获取请求的路径
         
        echo $request->url();                     //获取完整的url
         
        echo $request->ip();                      //获取请求的ip
         
        echo $request->getPort();                 //获取端口
         
        echo $request->method();                  //请求方法
         
        echo $request->isMethod('get');           //判断请求方法
         
        echo $request->ajax();                    //判断是否是ajax请求
         
        echo $request->is('member/info');         //判断是否是对应的控制器/方法
         
    }
  
}

二 session

1 配置 config/session.php

2 使用

laravel里使用session有三种方法

(1)  HTTP request类里的session方法

<?php
 
namespace App\Http\Controllers;
 
use App\Http\Controllers\Controller;
 
use Illuminate\Http\Request;
 
class MemberController extends Controller{
 
    public function info(Request $request){
 
        $request->session()->put('key1', 'value1'); // 设置
         
        echo $request->session()->get('key1');      // 取值
    }
 
}

设置session

$request->session()->put('key1', 'value1');    // 设置一个
 
$request->session()->put(['key1'=> 'value1','key2'=>'value2']);  //设置多个

以数组方式存储session

$request->session()->push('key1', 'value1');
 
$request->session()->push('key1', 'value2');

取出session

echo $request->session()->get('key1');   // 取出一个
 
print_r($request->session()->all());     // 取出所有

取出后删除session

echo $request->session()->pull('key1');

判断是否存在

echo $request->session()->has('key');

删除 session

$request->session()->forget('key');

清空(删除所有)

$request->session()->flush()

暂存(只能访问1次)

$request->session()->flash('key','value');

PS:pull和flash的区别

pull 取出后删除,程序后的取不到值

flash 第一次取出flash暂存的值时,只要不刷新,后面的程序还可以操作这个值

(2)  session辅助函数

<?php
 
namespace App\Http\Controllers;
 
use App\Http\Controllers\Controller;
 
class MemberController extends Controller{
 
    public function info(){
 
        session()->put('key2', 'value2');
         
        echo session()->get('key2');
 
    }
 
}

操作 参照第一种

(3)  session facade(使用Session类)

<?php
 
namespace App\Http\Controllers;
 
use App\Http\Controllers\Controller;
 
use Session;    // 使用Session类
 
class MemberController extends Controller{
 
    public function info(){
 
        Session::put('key3', 'value3');
         
        echo Session::get('key3');
    }
 
}

操作 参照第一种

三 response

常见的响应类型 :字符串,视图,json,重定向。

1 返回 json数据

<?php
 
namespace App\Http\Controllers;
 
use App\Http\Controllers\Controller;
 
class MemberController extends Controller{
 
    public function info(){
 
        $data = [
         
            'code'=>1,
             
            'msg'=>'提示'
        ];
 
        return response()->json($data);   //返回json数据
    }
 
}

2 重定向

return redirect('/')->with('key122','value122');         // 重定向根目录 参数填路由名 
 
return redirect()->action('MemberController@name')->with('key122','value122');  // 这个控制器/方法 必须先绑定路由
 
return  redirect()->route('m')->with('key122','value122');               // 参数是要跳转的路由别名
 
return redirect()->back();                // 返回上一级地址
 
return redirect()->away('http://laravelacademy.org');  //重定向到外部域名
 
//with后面是闪存的session数据 ,只能获取一次,刷新后消失

四 middleware

1 创建中间件(App\Http\Middleware 目录下)

<?php
 
namespace App\Http\Middleware;
 
use Closure;
 
class Activety{
 
    public function handle($request,Closure $next){
     
        if(time()<strtotime('2019-03-03')){
         
            return redirect('activety0');
             
        }
         
        return $next($request);
         
    }
     
}

2 注册中间件

protected $routeMiddleware = [
         
        'activety' => \App\Http\Middleware\Activety::class,
         
];

3 使用中间件

Route::group(['middleware'=>['activety']],function(){
 
        Route::get('activety1',['uses'=>'MemberController@activety1']);
         
        Route::get('activety2',['uses'=>'MemberController@activety2']);
         
});

PS:中间件的作用,当访问路由中注册过的中间件的地址时,先进入中间件进行过滤

猜你喜欢

转载自blog.csdn.net/qq_41179401/article/details/86607238
今日推荐