【发布时间】:2021-03-11 15:12:24
【问题描述】:
我有一个绑定到“x-editable”插件的多个字段,该插件发送更改的数据,并且像所有数据一样,我想验证它们。
但这里的问题是它总是只发送 2 个字段:name=is_on_probation&value=1。这里,name 键是必须验证的字段(它与 DB 列相同),value 是不言自明的。
我写了一个这样的验证规则:
'is_on_probation' => 'sometimes|...'
但后来我意识到它不会被验证,因为验证的实际主题在value字段中。
所以,这里的问题是:如何验证value 字段并根据name 值应用相应的规则?
我创建这个逻辑是为了不让额外的数组和逻辑污染控制器,所以它只会保存传递的参数。
问候!
附:我搜索了 StackOverflow,但没有找到最能描述我的问题的问题。可能是我看错了,没看到。
更新
经过一番思考,我想出了使用switch 并在那里传递请求字段的解决方案,如下所示:
switch($this->request->get('name')) {
case "email":
$rules = [
'value' => 'sometimes|required|unique:users,email|email:rfc',
];
break;
case "phone":
$rules = [
'value' => 'sometimes|required|min:8|max:13|regex:/^(\+371)?\s?[0-9]{8}$/'
];
break;
}
$rules[] = [
'pk' => 'required|exists:users,id'
];
但是,问题仍然存在 - 这是最好的解决方案和良好的做法吗?
【问题讨论】:
标签: php laravel laravel-validation laravel-request