看了超哥的 Laravel 中多型關係的表單驗證, 實用性很強! 我在大佬之上擴充了一下.
不懂的請看超哥原文!
使用trait擴充套件更靈活
trait RegisterValidator
{
public function __construct()
{
$this->registerValidators();
}
public function registerValidators()
{
if (property_exists($this, 'validators')){
foreach ($this->validators as $rule => $validator) {
Validator::extend($rule, "{$validator[0]}@{$validator[1]}");
}
}
}
}
配置屬性
public $validators = [
'sms'=>[
UserValidator::class, 'SMSVerification'
],
];
自定義的處理類
class UserValidator
{
public function SMSVerification($attribute, $value, $parameters, $validator)
{
}
}
在使用request中使用
class UserRequest extends FormRequest
{
use RegisterValidator;
/**
* 註冊自定義驗證規則
*
* @var array
*/
public $validators = [
'sms'=>[
UserValidator::class, 'SMSVerification'
],
];
public function authorize()
{
return true;
}
public function rules()
{
return [
'code'=>[
'sms'
]
];
}
}
在controller中使用
class UserController extends Controller
{
use RegisterValidator;
/**
* 自定義驗證規則
*
* @var array
*/
public $validators = [
'sms'=>[
UserValidator::class, 'SMSVerification'
],
];
public function store(Request $request)
{
$this->validate($request, [
'code'=>'sms'
]);
}
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結