上一篇:laravel框架整理一

Controller的请求Request

            需要在控制层引入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

        laravel中有三种使用session的方法,session的配置文件在config下的session.php

        一、reques session()

                $request->session()->put('key','value');    //写入session

                $request->session()->get('key');        //获取session

        二、session 的辅助函数

                session()->put('key','value');        //写入session

                session()->get('key');        //获取session

        三、通过session类

                use Illuminate\Support\Facades\Session;
                Session::put('key','value');        //写入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中取出数据后删除

                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

            需要在控制器中引入use Illuminate\Contracts\Routing\ResponseFactory;
            1、响应json

                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框架整理三