Search code examples
phplaravellaravel-routinglaravel-validation

How to add validation if CRUD operation is done with routes in Laravel


I wanted to ask for your help about how I can add validation to forms if routes are used rather than controllers. The code I use so far:

Route::post('/contact/submit', function (Request $request) {
    validate($request,[
        'FirstName'=>'required',
        'LastName'=>'required',
        'Age'=>'required'
    ]);

Also, how is it possible to add custom validation, for example, to ensure that instead of message "Name is required" just show "Please fill name field".


Solution

  • Yes you need to use Validator class and yes you can also add another variable for custom message.

    Route::post('/contact/submit', function (Illuminate\Http\Request $request) {
        $rules = [
            'FirstName' => 'required',
            'LastName' => 'required',
        ];
        $messages = [
            "FirstName.required" => "First name is compulsory.",
            "LastName.required" => "Last name is mandadory.",
        ];
        $validator = Validator::make($request->all(), $rules,$messages);
        if($validator->fails()){
            return dd($validator->messages());
        }
    });
    

    Error Message will be like

    MessageBag {#1332 ▼
      #messages: array:2 [▼
        "FirstName" => array:1 [▼
          0 => "First name is compulsory."
        ]
        "LastName" => array:1 [▼
          0 => "Last name is mandadory."
        ]
      ]
      #format: ":message"
    }