Laravel 中多态关系的表单验证 (trait 版)
看了超哥的 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 协议》,转载必须注明作者和本文链接