Laravel 表單自定義驗證
需求:我們想判斷一個字段是圖片或者是圖片地址
創建自定義驗證類
# App/Validators/CustomValidator.php
<?php
namespace App\Validators;
use Illuminate\Validation\Validator as Validator;
class CustomValidator extends Validator
{
protected function validateImageOrUrl($attribute, $value, $parameters)
{
return ($this->validateImage($attribute, $value, $parameters)
or $this->validateActiveUrl($attribute, $value, $parameters));
}
}
註冊自定義驗證類到app容器
在 App/Providers/AppServiceProvider.php 文件的 boot() 方法中進行註冊
# App/Providers/AppServiceProvider.php
<?php
namespace App\Providers;
use App\Validators\CustomValidator;
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
// 添加自定義驗證類
$this->app['validator']->resolver(function ($translator, $data, $rules, $messages) {
return new CustomValidator($translator, $data, $rules, $messages);
});
}
}
應用自定義規則
# App/Http/Requests/*.php
public function rules()
{
return [
'image' => 'image_or_url',
]
}