Laravel 控制器

1. Controller

  1. request
  2. session
  3. response
  4. middleware

1. Controller之Request

  1. laravel中的请求使用的是symfony/http-foundati0n组件

  2. 请求里面存放了$_GET、$_POST、$_COOKIE、$_FILES、$_SERVER等数据

    获取请求中的值

    判断请求类型

//1. 取值
echo $request->input('name');
echo $request->input('age','未知');

        if($request->has('name')){
            echo $request->input('name');
        }else{
            echo '无参数';
        }

//获取所有参数
$data =  $request->all();
dd($data);

             //2. 判断请求类型
        echo $request->method();
        if($request->isMethod('GET')){
            echo 'yes';
        }else{
            echo 'no';
        }

//是否是ajax
$bool = $request->ajax();
dd($bool);

//路由是否是
$bool = $request->is('student/*');
dd($bool);

//输出路由
echo $request->url();

2. Controller之session

laravel中使用session有三种方法

  1. HTTP request类的session()方法
  2. session()辅助函数
  3. session facade
| Supported: "file", "cookie", "database", "apc",
|            "memcached", "redis", "array"

  'driver' => env('SESSION_DRIVER', 'file'),

支持多种驱动,默认支持file驱动

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

//2. session()
session()->put('key1','value1');
echo session()->get('key1');

//3. Session
Session::put('key3','value3');
echo Session::get('key3');
echo Session::get('key4','default');

//以数组的形式
Session::put(['key4'=>'value4']);
echo Session::get('key4','default');

//把数据放到session的数组中
Session::push('student','care');
Session::push('student','winne');
$res =   Session::get('student');
dd($res);

//取出数据并删除
$res =   Session::pull('student','default');
dd($res);

//取出所有的session
$res = Session::all();
dd($res);

//判断session中某个key是否存在
if(Session::has('key1')){
  $res = Session::all();
  dd($res);
}else{
  echo '没有';
}

//删除session的某个值
Session::forget('key1');

//删除session中所有的值
Session::flush();

//第一次返回存在,第二次不存在
Session::flash('key-flash','val-flash');
echo Session::get('key-flash');

3. Controller之respone

响应的常见类型

  1. 字符串
  2. 视图
  3. json
  4. 重定向
//3. 响应json
$data = [
  'errCode' => 0,
  'errMsg'  => 'success',
  'data'    =>  'care'
];
//dd($data);
return response()->json($data);

//4. 重定向
return redirect('session2');  //跳转
return redirect('session2')->with('message','我是快闪数据');
//验证
return Session::get('message','暂无信息');

//action
return redirect()->action('StudentController@session2')->with('message','我是快闪数据');

//route
return redirect()->route('session2')->with('message','我是快闪数据');

//返回上一页
return redirect()->back();

4. Controller之Middleware

中间件有什么作用

​ Laravel中间件提供一个方便的机制来过滤进入应用程序的HTTP请求

场景

​ 有一个活动,在指定日期后开始,如果活动没有开始只能访问宣传页面

  • 新建中间件

  • 注册中间件

  • 使用中间件

  • 中间件的前置和后置操作

<?php
namespace App\Http\Middleware;
class Activity 
{
    //前置操作
    public function handle($request ,\Closure $next)
    {
      if(time() < strtotime('2019-5-27')){
      return redirect('activity0');
      }
      return $next($request);
    }

    //后置操作
    public function handle($request ,\Closure $next)
    {
        $response = $next($request);
        echo($response);
//        echo '后置操作';
    }
}
   protected $routeMiddleware = [
        'activity' => \App\Http\Middleware\Activity::class,
    ];
Route::get('activity0',['uses'=>'StudentController@activity0']);
Route::group(['middleware'=>['activity']],function (){
    Route::get('activity1',['uses'=>'StudentController@activity1']);
    Route::get('activity2',['uses'=>'StudentController@activity2']);
});
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!