首先,擴展的收個問題是,我的擴展類應該放在哪兒纔好呢?
直接在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
這個文件,我的修改如下圖:
這裏還有一點要說明哦,如果你要使用 zh
文件下的信息,請一定在 app/config/app.php
中將locale設置爲locale=zh
。
這裏有些同學說,我們怎麼沒有zh這個文件呢?其實這是laravel的語言包,網上相當的多啦。不過這裏爲了大家方便,我免費放一個在CSDN上,供大家下載吧