laravel中及其經常使用的一些函數方法(本身看)和技巧(不斷添加中)

手冊:https://laravelacademy.org/php

 

1.中間件的定義Middlewarecss

2.路由的定義和寫法html

3.控制器Controller之Requestlaravel

4.控制器Controller之Sessionweb

5.控制器Controller之Responseajax

6.控制器Controller之Middlewareredis

7.表單驗證數據庫

8.模板繼承json

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 App\Http\Middleware;

use Closure;

class OldMiddleware {

    /**
     * Run the request filter.
     *
     * @param  \Illuminate\Http\Request  $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 Illuminate\Support\Facades\Session;
        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 Illuminate\Support\Facades\Validator;
        $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 Illuminate\Support\Facades\Validator;
        $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
相關文章
相關標籤/搜索