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 协议》,转载必须注明作者和本文链接
农村闲散劳动力
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!