laravel validation problem - validation does not work

Viewed 100
    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.' );
}

Theese are my codes. It's not working and not saving. When i remove validation rows, its working fine. For example:

   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.' );
}

This is working. But if i add validation and rules, there is a problem. There is no write any error message so i could not fix it. But its not saving to the database. Where am i wrong, i could not fix it. If you help me i will be glad. Thanks

1 Answers

You have to use $vali->fails() instead of $vali->errors() Because $vali->fails() return true or false;

if($vali->fails()) {

}

instead of

 if($vali->errors()) {

}

Because even if you don't have errors $vali->errors() it return

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

    [format:protected] => :message
)
Related