zoukankan      html  css  js  c++  java
  • laravel中及其常用的一些函数方法(自己看)和技巧(不断添加中)

    手册:https://laravelacademy.org/

    1.中间件的定义Middleware

    2.路由的定义和写法

    3.控制器Controller之Request

    4.控制器Controller之Session

    5.控制器Controller之Response

    6.控制器Controller之Middleware

    7.表单验证

    8.模板继承

    9.跳转

    10.数据库操作 (  http://www.cnblogs.com/fps2tao/p/7859322.html  )

      https://laravelacademy.org/post/19521.html

    11.文件上传 (   https://www.cnblogs.com/fps2tao/p/11346476.html   )

    使用案例:

    ----------------------

    1.中间件的定义

      1)可以手动新建文件,也可以通过命令生成

    php artisan make:middleware OldMiddleware

      2)中间件传2个参数一个是$request和Closure $next (Closure 请参考:http://www.php.net/manual/zh/class.closure.php)

    <?php namespace AppHttpMiddleware;
    
    use Closure;
    
    class OldMiddleware {
    
        /**
         * Run the request filter.
         *
         * @param  IlluminateHttpRequest  $request
         * @param  Closure  $next
         * @return mixed
         */
        public function handle($request, Closure $next)
        {
            if ($request->input('age') < 200)
            {
                return redirect('home');
            }
    
            return $next($request);
        }
    
    }

      3)Before / After 中间件

      4)注册中间件 

        4.1若是希望中间件被所有的 HTTP 请求给执行,只要将中间件的类加入到 app/Http/Kernel.php 的 $middleware 属性清单列表中。

        4.2指派中间件给路由

    Route::get('admin/profile', ['middleware' => 'auth', function(){}

      5)可终止中间件(请参阅 https://docs.golaravel.com/docs/5.0/middleware/#registering-middleware)

    6) 注册中间件分为三种:分别是全局中间件、中间件组和指定路由中间件,  https://laravelacademy.org/post/9539.html

    2.路由的定义和写法

    as 给路由起别名 可以在跳转用到

    Route::get('user/profile', [
        'as' => 'profile', 'uses' => 'UserController@showProfile'
    ]);
    $url = route('profile');
    $redirect = redirect()->route('profile');

    下面是命名空间,分组,中间价的定义

    Route::group(['prefix'=>'admins','namespace' => 'Admins','middleware'=>['cookie']],function() {
        //与上面路由相比需要登录验证
        Route::get('/report/reportupload','ReportController@ReportUpload');
        Route::post('/report/upload','ReportController@upload');
        Route::get('/report/getexcel','ReportController@getExcel');
        Route::get('/report/filelist','ReportController@fileList');
    
    });

    laravel 5.8 的路由写法

    3.控制器Controller之Request

            //取值
            $request->input('name','未知');//取值和没有的时候默认值
            $request->has('name');//判断有没有这个参数
            $request->all();//所有值
            //判断请求以类型
            $request->method();//POST GET
            $request->isMethod();//判断是不是GET请求
            $request->ajax();//判断是不是ajax请求
            //判断请求是不是特定的请求
            $request->is('person/*');//判断这个请求是不是person控制器下的方法
            //获得当前的url
            $request->url();

    ...

    4.控制器Controller之session

      1)使用HTTP Request类的session()方法

      2)session()辅助函数

      3)Session facade

    配置文件在:config/session.php 支持多种形式file,dataase,memcached,redis (这里其实可以不变,在.env更改即可)

     开启session_start()  在Kernel.php 文件中有一个web的中间件,里面开启了session.  把这个web中间价加入路由中即可

    阅读:  https://laravelacademy.org/post/9546.html

            //取值
            $request->input('name','未知');//取值和没有的时候默认值
            $request->has('name');//判断有没有这个参数
            $request->all();//所有值
            //判断请求以类型
            $request->method();//POST GET
            $request->isMethod('post');//判断是不是GET请求
            $request->ajax();//判断是不是ajax请求
            //判断请求是不是特定的请求
            $request->is('person/*');//判断这个请求是不是person控制器下的方法
            //获得当前的url
            $request->url();
    
    
            //1.HtTTP Request session()
            $request->session()->put('key','value1');
            echo $request->session()->get('key');
            //2.session()
            session()->put('key2','value2');
            session()->get('key2');
            //3.Session  use IlluminateSupportFacadesSession;
            Session::put('key3','value3');
            Session::get('key3');
    
            //详细使用
            Session::get('key3','default');
            //数组形式存储数据
            Session::put(['key4'=>'value4']);
            Session::get('key4');
    
            //把数据放到session数组中
            Session::push('student','sean');
            Session::push('student','imook');
            $res = Session::get('student','default');
            var_dump($res);
    
            //session取值完后删除
            $res = Session::pull('student','default');
            var_dump($res);
    
            //取出所有值
            Session::all();
            //是否存在
            Session::has('key1');
    
            //删除数据
            Session::forget('key1');
    
            //删除全部值
            Session::flush();
            
            //暂存数据,一次性session
            Session::flash('key-flash','val-flash');

    5.控制器Controller之Response

     响应的常见类型有 :    字符串 ,视图,json,重定向

    $data =[
        'errCode'=>0,
        'errMsg'=>'success',
        'data'=>'sean',
    ];
    response()->json($data);
            redirect('person');
            redirect('person')->with('message','我是快闪数据');
            redirect()->action('StudentController@person')->with('message','我是快闪数据');
            redirect()->route('person')->with('message','我是快闪数据');//路由别名 as
            redirect()-back();

    6.控制器Controller之Middleware

    7.表单验证及数据保持(一次性session)

      1)控制器验证  2)Validator验证

            
    //控制器验证
         $rules = [ 'username' => 'required|max:10', 'password' => 'required|max:10', 'groupid' => 'required', 'grouptitle' => 'required', 'groupname' => 'required', 'pid' => 'required', 'groupqq' => 'required', ]; $message = [ 'username.required'=>'账号不能为空!', 'username.max'=>'账号不能大于10位!', 'password.required'=>'密码不能为空!', // 'code.required'=>'验证码不能为空!', // 'code.between'=>'验证码必须为4位!', 'groupid.required'=>'groupid不能为空!', 'grouptitle.required'=>'grouptitle不能为空!', 'groupname.required'=>'groupname不能为空!', 'pid.required'=>'pid不能为空!', 'groupqq.required'=>'groupqq不能为空!', ]; $this->validate($request,$this->rules,$this->message);//会自动跳转 用一次性session
            //Validator类验证  use IlluminateSupportFacadesValidator;
            $validator = Validator::make($request->input(),$rules,$message);
            if($validator->fails())
            {//验证失败,重定向,或返回
                return redirect()->back()->withErrors($validator);
            }

    传参数不同的另一种形式(多传了一组参数)

    //控制器验证
            $this->validate($request,
                ['Student.name'=>'required|max:10','Student.age'=>'required|integer'],
                ['required'=>':attribute 为必填项','integer'=>':attribute 是整数','max'=>':attribute 最大值'],
                ['Student.name'=>'姓名','Student.age'=>'性别']
            );
            //Validator类验证  use IlluminateSupportFacadesValidator;
            $validator = Validator::make($request->input(),
                ['Student.name'=>'required|max:10','Student.age'=>'required|integer'],
                ['required'=>':attribute 为必填项','integer'=>':attribute 是整数','max'=>':attribute 最大值'],
                ['Student.name'=>'姓名','Student.age'=>'性别']);
            if($validator->fails())
            {//验证失败,重定向,或返回
                return redirect()->back()->withErrors($validator);
            }

     错误信息模板显示

    @if (count($errors))
        {{$errors->first()}}
        @foreach($errors->all() as $error)
           {{$error}}
        @endforeach
    @endif

     数据保持 采用一次性session

    8.模板继承

    模板的url路径 :{{ asset('css/app.css') }},{{ url('/') }},{{ route('login') }}

    表单里面的数据 {{ csrf_field() }},

    包含视图 @include('view.name')

    <!-- CSRF Token -->
    <meta name="csrf-token" content="{{ csrf_token() }}">
    参考:https://docs.golaravel.com/docs/5.0/templates/#other-blade-control-structures
     
    循环 判断等
     
    其他请百度
     
     
     
     
     也可以参照 : http://lampol-blog.com/detail/aid/OWIwYS8yWXdWVk5JYUVLam9YWUV3U1haSnRCQkdVK2ZDcjhzckk2d2h3
     
     
     
     
  • 相关阅读:
    多线程等待
    多线程多进程
    Django中的 返回json对象的方式
    爬虫之 单线程+多任务异步协程
    python 调用github的api,呈现python的受欢迎的程度
    爬虫之线程池
    爬虫之代理和cookie的处理
    pip 安装报错
    git 新建仓库第一次提交
    ansible的剧本
  • 原文地址:https://www.cnblogs.com/fps2tao/p/8726890.html
Copyright © 2011-2022 走看看