Laravel Controller的request,response,session,middleware

Controller之Request

    Laravel中的请求使用的是symfony/http-foundation组件

    请求中存放了$_GET,$_POST,$COOKIE,$_FILES,$_SERVER等数据

public function request1(Request $request)
{
    //1.取值
    //取特定值
    echo $request->input('name');
    //设置默认值
    echo $request->input('sex','未知');
    //判断是否存在
    if($request->has('name'))
    {
        echo $request->input('name');
    }else{
        echo "无该参数";
    }
    //输出所有值
    $res = $request->all();
    dd($res);

    //2.判断请求类型
    //返回当前请求类型
    echo $request->method();
    //判断指定类型是不是需要的类型
    $bool =  $request->isMethod('GET');
    //判断是不是ajax方法
    $rs = $request->ajax();
    //判断请求路径是否符合特定格式
    $request->is('student/*');
    //获得当前URL
    $request->url();

}

Controller之Session

    由于http协议是无状态的,所以Session提供一种保护用户数据的方法。
    Laravel支持多种session后端驱动,并提供清楚、统一的API。也内置Memcached、Redis和数据库的后端驱动。默认使用“file”的Session驱动。

    session的配置文件在config/session.php中。

在Kernel.php文件中定义了StartSession:
protected $middlewareGroups = [
    'web' => [
        \App\Http\Middleware\EncryptCookies::class,
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        \Illuminate\Session\Middleware\StartSession::class,
        // \Illuminate\Session\Middleware\AuthenticateSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        \App\Http\Middleware\VerifyCsrfToken::class,
        \Illuminate\Routing\Middleware\SubstituteBindings::class,
    ],

    'api' => [
        'throttle:60,1',
        'bindings',
    ],
];
配置路由时将路由放进中间件组中:
Route::group(['middleware'=>['web']],function(){
    Route::any('session1',['uses'=>'StudentController@session1']);
    Route::any('session2',['uses'=>'StudentController@session2']);
});
使用Session的三种方式:
public function session1(Request $request)
{
    //1.HTTP request session()存入数据;
    $request->session()->put('key1','value1');
    //2.session的辅助函数存入数据
    session()->put('key2','value2');
    //Session类存入数据
    Session::put('key3','value3');
}

public function session2(Request $request)
{
    //1.HTTP request session()取出数据;
    echo $request->session()->get('key1');
    //2.session的辅助函数取出数据
    echo session()->get('key2','value2');
    //Session类取出数据
    Session::get('key3');
}
主要使用Session类的方式:
public function session1()
{
    //Session类存入数据
    Session::put('key3','value3');
    //以数组的形式存入值
    Session::put(['key4'=>'value4']);
    //将数据放入session的数组中
    Session::push('student','sean');
    Session::push('student','imooc');
    //暂存数据,创建只使用一次的Session值,再次访问时不存在
    Session::flash('key-flash','val-flash');
}

public function session2()
{
    //Session类取出数据,若不存在则输出默认值
    Session::get('key3','default');
    //获取数组中的值
    Session::get('key4');
    //获取数组中的值
    $res = Sesssion::get('student');
    dd($res);
    //session中的值取出后删除
    Session::pull('student');
    //取出session中所有的值
    Session::all();
    //判断session中某个key是否存在
    Session::has('key1');
    //删除session中的某个值
    Session::forget('key2');
    //删除session中的所有值
    Session::flush();
    //使用flash    Session::get('key-flash');
}

Controller之Response

响应的常见类型

public function response1()
{
    //响应json,将数组数据变成json并输出
    $data=[
        'errCode'=>0,
        'errMes'=>'success',
        'data'=>'sean'
    ];
   return  response()->json($data);

   //重定向
    return redirect('response2');
    //附带信息
    return redirect('response2')->with('message','我是快闪数据');

}

public function response2(){
   return  Session::get('message','暂无信息');
   //返回上一页面
   return redirect()->back();
}

Controller之Middleware

    中间件的作用:提供一个方便的机制来过滤进入应用程序的HTTP请求
    场景:有一个活动,在指定日期后开始,如果活动没有开始只能访问宣传页面。
        1.新建中间件
            在middleware文件夹下新建中间件:

<?php
namespace App\Http\Middleware;

class Activity
{
    //前置操作
    public function handle($request,\Closure $next)
    {
       //strtotime()从一个字符串获得一个时间戳
        if(time()<strtotime('2016-06-05')){
            return redirect('activity0');
        }
        return $next($request);
    }
}

        2.注册中间件

            在kernel.php文件的注册:

protected $routeMiddleware = [
    'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
    'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
    'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
    'can' => \Illuminate\Auth\Middleware\Authorize::class,
    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
    'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
    'activity'=>\App\Http\Middleware\Activity::class, //新注册的中间件
];
        3.使用中间件
            在路由中将需要判断的路由放入中间件中:
//宣传页面
Route::any('activity0',['uses'=>'StudentController@activity0']);
//互动页面
Route::group(['middleware'=>['activity']],function(){
    Route::any('activity1',['uses'=>'StudentController@activity1']);
    Route::any('activity2',['uses'=>'StudentController@activity2']);
});
        4.中间件的前置和后置操作
            逻辑在请求前为前置,反之为后置。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值