Controller-request
获取请求中的值
请求
localhost/laravel/public/request1?name=sean
取值
public function request1(Request $request)
{
$request->input('name','未知');//获得name字段,如果没有默认值为'未知',选填
//判断
if($request->has('name'))
//所有的参数
$res=$request->all();
}
判断请求类型
$request->method();//返回请求类型
$request->isMethod('POST');//判断是否是某种请求
$request->is('student/*');//判断路由的路径是否符合定义的规则
$request->url();//获得request的当前url
Controller-session
session配置文件config/session.php
路由时需要添加sessionstart的中间件
Route::group(['middleware'=>['web']],function(){
Route::any('session1',['uses'=>'StudentController@session1']);
Route::any('session2',['uses'=>'StudentController@session2']);
});
http request类的session()方法
public function session1(Request $request){
$request->session()->put('key1','value1');//session写入内容
}
public function session2(Request $request){
$request->session()->get('key1');//取出session中的内容
}
session()辅助函数
public function session1(Request $request){
session()->put('key2','value2');//session写入内容
}
public function session2(Request $request){
session()->get('key2');//取出session中的内容
}
session 类的方法
public function session1(Request $request){
Session::put('key3','value3');//session写入内容
Session::put(['key4']=>'value4']);//以数组的形式
Session::push('student','a');
Session::push('student','b');
Session::push('student','c');
Session::flash('falsh-key','flash-val');//只第一次访问存在之后不存在
}
public function session2(Request $request){
Session::get('key3','default');//取出session中的内容,如果没有使用default值
Session::get('student','default');//返回一个数组
Session::pull('student',default;)//取出数据并删除
Session::all();//返回所有的session数据
if(Session::has('key1'))//判断session中某个key是否存在
Session::forget('key1')//删除session中key1
Session::flush()//删除session所有数据
}
Controller-Response
常见相应类型:字符串、视图、json、重定向
json
$data=[
'errcode'=>0,
'errMsg'=>'success'
];
return response()->json($data);//返回json字符串
重定向
return redirect('路由')
return redirect('路由')->with('message','数据');//带数据的,原理是session的falsh(),使用Session::get('message','default');获取
return redirect()->action('控制器@方法名')->with('message','数据');
return redirect()->route('路由别名')->with('message','数据');
Controller-Middleware
过滤进入应用程序的http请求新建中间件
namespace App\Http\middleawre;
use Closure
class Activity{
public function handle($request,Closure $next){//必须这么写
if(time()<strtotime('2018-7-5')){
return redirect('activity0');//如果时间在此之前则转到控制器里的activity0
}
return $next($request);
}}
注册中间件
添加
'activity'=>\App\Http\Middleware\Activity::class,
使用中间件
路由中添加
遇到activity1和activity2路由时先进到中间件判断一下,
Route::group(['middleware'=>['activity']],function(){
Route::any('activity1',['uses'=>'StudentController@activity1']);
Route::any('activity2',['uses'=>'StudentController@activity2']);
});
中间件的前置和后置操作
逻辑在请求前执行:前置操作
public function handle($request,Closure $next){//必须这么写
if(time()<strtotime('2018-7-5')){
return redirect('activity0');//如果时间在此之前则转到控制器里的activity0
}
return $next($request);//请求
}}
逻辑在请求后执行:后置操作
public function handle($request,Closure $next){//必须这么写
$response= $next($request);//请求
echo'我是后置'
}