天天看點

laravel拓展validator驗證

首先,擴充的收個問題是,我的擴充類應該放在哪兒才好呢?

直接在app目錄下,建立一個目錄: ​

​app/Extensions​

​ ,然後這個目錄中專門用來存放你的各類擴充,或者在APP下建立一個common目錄下面放置helpers目錄下面建立helper.php類

/**
 * 是否為手機号碼
 * @param $string
 * @return bool
 */
public static function isMobile($string) {
    return !!preg_match('/^1[3|4|5|7|8]\d{9}$/', $string);
}
      

或者

<?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::extend('mobile', function ($attribute, $value, $parameters) {
    return Helper::isMobile($value);
});
      
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​

​ 這個檔案,我的修改如下圖:

laravel拓展validator驗證

這裡還有一點要說明哦,如果你要使用 ​

​zh​

​ 檔案下的資訊,請一定在 ​

​app/config/app.php​

​ 中将locale設定為​

​locale=zh​

​ 。

這裡有些同學說,我們怎麼沒有zh這個檔案呢?其實這是laravel的語言包,網上相當的多啦。不過這裡為了大家友善,我免費放一個在CSDN上,供大家下載下傳吧

非學,無以緻疑;非問,無以廣識