首页 > 解决方案 > 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.' );
}

这是有效的。但是如果我添加验证和规则,就会出现问题。没有写任何错误消息,所以我无法修复它。但它没有保存到数据库中。我哪里错了,我无法修复它。如果你帮助我,我会很高兴。谢谢

标签: laravelvalidation

解决方案


您必须使用$vali->fails()而不是 $vali->errors()因为$vali->fails()返回truefalse;

if($vali->fails()) {

}

代替

 if($vali->errors()) {

}

因为即使你没有错误$vali->errors()它也会返回

Illuminate\Support\MessageBag Object
(
    [messages:protected] => Array
        (
        )

    [format:protected] => :message
)

推荐阅读