上一篇:laravel框架整理一
Controller的请求Request
1、取值
$request->input('name','默认值');
//取所有参数值
$res=$request->all();
2、判断是否有值
if($request-has('name')){
echo $request->input('name');
}else{
echo '无该参数';
}
3、判断请求类型
$request->method();
if($request->isMethod('Get')){}...
if($request->ajax()){}....
$request->is('user/*') //判断是否是符合user路由规则
4、获取当前url
$request->url();
Controller的Session
一、reques session()
$request->session()->put('key','value'); //写入session
$request->session()->get('key'); //获取session
二、session 的辅助函数
session()->get('key'); //获取session
三、通过session类
Session::get('key','default'); //获取session
Session::put(['key'=>'value']) //以数组的形式存储数据
//把数据放到Session的数组中
Session::push('user','labmem1');
Session::push('user','labmem2');
//暂存数据,存入session取出一次后删除
Session::flash('key','value');
Session::pull('key','default');
//取出所有的值
$array=Session::all();
//判断session中某个key是否存在
if(Session::has('key')){
echo 'ok';
}else{
echo 'no';
}
//删除session指定key的值
Session::forget('key');
//清空所有的session
Session::flush();
Controller的响应Response
response()->json($array);
2、重定向跳转
1- return redirect('url');
return redirect('url')->with('message','value'); //可以传一个session的暂存信息
2-return redirect()->action('UserController@index')->with('','');
3-return redirect()->route('')->with('',''); //通过别名跳转
4-return redirect()->back(); //返回上一级
Controller的中间件Middleware
laravel中间件提供一个方便的机制来过滤进入应用程序的HTTP请求,感觉与Spring AOP很像
场景举例:一个活动在指定日期后开始,在活动未开始前只能访问宣传页面
在控制器中写活动前与活动后的方法并路由
在Middleware目录下新建一个中间件文件
<?php
namespace App\Http\Middleware;
use Closure;
class Activity{
//前置操作
public function handle($request,Closure $next)
{
if(time()<strtotime('2017-11-30')){
return redirect('activity0'); //跳转到宣传页面
}
return $next($request);
}
//后置操作
public function handle()
{
$response=$next($request);
echo '后置逻辑单元';
return $reponse;
}
}
中间件写好后到Kernel.php注册中间件
注册全局中间件在$middleware中注册
在$routeMiddleware数组中加入
'activity'=>\App\Http\Middleware\Activity::class
中间件在 HTTP Kernel 中被定义后,可以使用 middleware 方法将其分配到路由
Route::get('admin/profile', function () {
//
})->middleware('auth');
使用数组分配多个中间件到路由:
Route::get('/', function () {
//
})->middleware('first', 'second');
分配中间件的时候还可以传递完整的类名
use App\Http\Middleware\CheckAge;
Route::get('admin/profile', function () {
//
})->middleware(CheckAge::class);
中间件组可以被分配给路由和控制器动作,使用和单个中间件分配同样的语法。再次申明,中间 件组的目的只是让一次分配给路由多个中间件的实现更加简单:
Route::group(['middleware'=>['activity']],function(){
Route::any('activity1',['uses'=>'UserController@activity1']); //将活动页面路由放入
});
下一篇:laravel框架整理三