Laravel 5.3-验证规则最小值和所需值(如有问题)
因此,在Laravel 5.3-验证规则最小值和所需值(如有问题),laravel,laravel-5,laravel-5.3,Laravel,Laravel 5,Laravel 5.3,因此,在请求中,我们进行了一些验证,类型字段将是审阅,这意味着正文字段必须至少有6个字符 public function rules(){ return [ 'type' => 'required|in:star_rating,review', 'body' => 'required_if:type,review|min:6' ]; } 但是,问题是当类型为星级时,我得到一个错误,正文必须至少包含6个字符。 这不应该发生,因为主体是
请求
中,我们进行了一些验证,类型
字段将是审阅
,这意味着正文
字段必须至少有6个字符
public function rules(){
return [
'type' => 'required|in:star_rating,review',
'body' => 'required_if:type,review|min:6'
];
}
但是,问题是当类型
为星级
时,我得到一个错误,正文必须至少包含6个字符。
这不应该发生,因为主体是可选的,并且只有在类型为审核时才需要并使用min:6
进行验证。我似乎不明白为什么它会对它运行min:6
验证,即使type
是star\u rating
你知道如何让它按预期工作吗?如果不了解你的逻辑,我无法确定你想如何继续。但是下面的概念应该会让你开始
它将根据您定义的参数进行设置。在您的情况下,如果类型
为审阅
,则只需要正文
,如果类型
为审阅
,则还应用最小
规则
use Validator;
// Static rules that don't change
$v = Validator::make($data, [
'type' => 'required|in:star_rating,review'
]);
// Conditional rules that do change
$v->sometimes('body', 'required|min:6', function ($input) {
return $input->type === 'review';
});
// Validator failed? Return back with errors/input
if ($validator->fails()) {
return back()->withErrors($validator)
->withInput();
}
// Proceed however you'd like with request
我也有同样的问题,CamelCase的答案很好!
但我必须将验证逻辑放回控制器,因为我试图将此验证逻辑放回请求中
下面是另一个在Laravel5.4中使用请求
中的条件规则的解决方案
public function rules()
{
// general rules
$rules = [
'type' => 'required|in:star_rating,review',
];
// conditional rules
if($this->input('type') == 'review'){
$rules['body'] = 'required | min:6';
}
return $rules;
}
如果
只应用了required
规则,而不是min
规则,我想这可能是由于required\u造成的。似乎您也希望忽略min
规则,如果不适用,则该规则是必需的。您可能正在寻找允许您在给定条件为真时定义(有时
)。查看上面链接中基于关闭的验证,它将处理您需要的!我对如何将链接中的代码集成到请求
中有点困惑,该请求有两个标准功能authorize
和rules
知道如何正确地将其集成到请求
中吗?添加了一个应该有帮助的答案,太多了,无法输入注释。希望有帮助!您好,我有完全相同的问题(在laravel 5.4中),我在文档和您的回答中都不理解的是:将此代码放在哪里?是否在FormRequest文件中?正如旺卡所说,它只有两种方法,授权
规则
,我不知道如何在其中一种方法中实现这一点,是在我的控制器中吗?如果是的话,这有点烦人,因为我正在重构我的控制器,以便将验证过程放入请求中。