1. 程式人生 > >11.Laravel5學習筆記:擴展 Validator 類

11.Laravel5學習筆記:擴展 Validator 類

mobile 例如 主題 main 文件 ttr 寫到 line als

簡單介紹


Laravel5 中,本身已經提供了豐富的驗證規則供我們使用,可是天下應用奇葩多,做為程序猿你會發現永遠都有新的驗證規則誕生,光是組合已經解救不了你的項目了。這個時候就須要我們擴展 Validator 類,來使之幫助項目繼續健康向前發展。

官方給了多種擴展 Validator 的方式,我獨愛直接擴展該類,可是關於這一點。官文中又寫的寥寥數語。確實新人有些無奈。這裏具體說一下,怎樣擴展它。

擴展驗證類


  • 首先。擴展的收個問題是。我的擴展類應該放在哪兒才好呢?我的意見是:直接在app文件夾下,建立一個文件夾: app/Extensions

    ,然後這個文件夾中專門用來存放你的各類擴展。

  • 建立文件夾後,我們在這個文件夾中建立一個php文件 MyValidator.php 文件。

<?php

namespace App\Extensions;

use Illuminate\Validation\Validator;
use App\Libary\Util\Validate;

/**
 * 
 * @desc 擴展驗證類
 * @author helei
 */
class MyValidator extends Validator
{
    /**
     * 驗證11位手機號碼
     */
    public
function validateMobile($attribute, $value) { if (is_null($value)) { return false; } return Validate::isMobile(trim($value));// 這裏也能夠直接將驗證規則寫在這裏 } }

這段代碼表達了這麽一個主題:驗證輸入的手機號碼,是不是一個合法的手機號碼。有一個須要特別註意的是 [我們自己定義的驗證方法,必須要以 validate 開頭]


  • 接下來就是要把我們寫的驗證類,註冊到容器中,關於 怎樣註冊自己的服務到容器
    請參考這篇之前的文章
    這裏我還是在啰嗦一下,官方文檔中,就給了這麽一句:

接下來。您須要註冊您自己定義驗證器擴展:
Validator::resolver(function(translator,data, rules,messages)
{
return new MyValidator(translator,data, rules,messages);
});

老實說,我人比較SB。當時看到這裏的時候,我就郁悶了,你讓我註冊。我在哪兒註冊呢?天下之大,處處可註冊,有沒有一個規範?說實話,還真沒有。真的是,你如今那個服務提供者裏邊註冊都行,既然如此,我就直接將這部分註冊代碼寫在了 AppServiceProvider 裏邊。具體代碼例如以下:

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        /*註冊自己定義驗證類*/
        /* Validator::resolver(function($translator, $data, $rules, $messages){
            return new SalonValidator($translator, $data, $rules, $messages);
        }); */
        $this->app[‘validator‘]->resolver(function ($translator, $data, $rules, $messages){
            return new SalonValidator($translator, $data, $rules, $messages);
        });
    }

OK,這裏寫了之後。請一定記得將該服務提供者寫到 app.php 這個配置文件裏去哈。假設你不知道怎麽寫。說明你沒有看我說的 這篇文章

到了這兒。還不算完,另一步。那就官網假設驗證錯誤,都會給出提示信息。這個提示信息,我們在哪裏去弄呢?大家能夠打開 resources/lang/zh/validation.php 這個文件,我的改動例如以下圖:
技術分享圖片

這裏另一點要說明哦。假設你要使用 zh 文件下的信息,請一定在 app/config/app.php 中將locale設置為locale=zh


這裏有些同學說,我們怎麽沒有zh這個文件呢?事實上這是laravel的語言包,網上相當的多啦。只是這裏為了大家方便,我免費放一個在CSDN上。供大家下載吧


Laravel5專題文件夾

11.Laravel5學習筆記:擴展 Validator 類