Laravel 控制器
1. Controller
- request
- session
- response
- middleware
1. Controller之Request
-
laravel中的请求使用的是symfony/http-foundati0n组件
-
请求里面存放了
$_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有三种方法
- HTTP request类的session()方法
- session()辅助函数
- 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
响应的常见类型
- 字符串
- 视图
- json
- 重定向
//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 协议》,转载必须注明作者和本文链接