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 协议》,转载必须注明作者和本文链接
农村闲散劳动力
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

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