laravel - laravel 验证问题 - 验证不起作用
问题描述
public function contactPost(Request $request) {
$rules = [
'name' => 'required|min:3',
'email' => 'required|email',
];
$vali = Validator::make($request->post(), $rules);
if($vali->errors()) {
return redirect()->route('contact')->withErrors($vali)->withInput();
}
$contact = new Contact;
$contact->name= $request->name;
$contact->email = $request->email;
$contact->title = $request->title;
$contact->message = $request->message;
$contact->save();
return redirect()->route('contact')->with('successSession', 'Succesfull, thanks.' );
}
这些是我的代码。它不工作,不保存。当我删除验证行时,它工作正常。例如:
public function contactPost(Request $request) {
$contact = new Contact;
$contact->name= $request->name;
$contact->email = $request->email;
$contact->title = $request->title;
$contact->message = $request->message;
$contact->save();
return redirect()->route('contact')->with('successSession', 'Succesfull, thanks.' );
}
这是有效的。但是如果我添加验证和规则,就会出现问题。没有写任何错误消息,所以我无法修复它。但它没有保存到数据库中。我哪里错了,我无法修复它。如果你帮助我,我会很高兴。谢谢
解决方案
您必须使用$vali->fails()
而不是 $vali->errors()
因为$vali->fails()
返回true
或false
;
if($vali->fails()) {
}
代替
if($vali->errors()) {
}
因为即使你没有错误$vali->errors()
它也会返回
Illuminate\Support\MessageBag Object
(
[messages:protected] => Array
(
)
[format:protected] => :message
)
推荐阅读
- flexbox - Flex with a taller left column and right column that fills with smaller items
- java - 将 JSON“子数组”传递给另一个 Activity
- javascript - Why are my Associations not being recognized and causing a SequelizeEagerLoadingError?
- reactjs - 如何在 React-Natvie 中设置 AsyncStorage onPress
- reactjs - 除非包装在 div 中,否则从数组中删除组件不起作用
- c# - 设置一个方法来返回作为参数传递的函数的返回值
- ibm-watson - 我怎样才能找到 ASSISTANT_USERNAME 和 ASSISTANT_PASSWORD
- c# - Acumatica mobile - 现场更改未在动作压力机上提交
- twitter-bootstrap - What is the Bootstrap card-block class?
- c# - Error when trying to set up custom validation in MVC 5