skip to Main Content
protected function validator(array $data)
{
    $validation = Validator::make($data, [
        'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
        'password' => ['required', 'string', 'min:8', 'confirmed']
    ]);
    if ($validation->fails())
    { 
        return session()->flash('alert-danger', 'error');
    }
}

protected function create(array $data)
{
    $company = new Company();
    $company->store_name = $data['company_name'];
    $company->save();
}

Check the fail status inside the validator function and show the error message

3

Answers


  1.  request()->validate([
            'email' => 'required'
        ],
        [
            'email.required' => 'You have to choose the email!',
        ]);
    
    Login or Signup to reply.
  2. try this below code instead of the above validation

    request()->validate([
            'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
            'password' => ['required', 'string', 'min:8', 'confirmed'],
        ];
    

    now if you remove the code

       if ($validation->fails())
            { 
                return session()->flash('alert-danger', 'error');
            }
    

    the code will run without any error .
    and if you do not enter any value in the input field
    the the request->validate() will check all the request.

    Login or Signup to reply.
  3. You need to actually return something in your if ($validation->fails()) check. Right now, you’re setting a session Flash, but returning null (->flash() has no return value).

    You have a couple solutions here, but it depends if this is a Form Submission or an AJAX Request:

    protected function validator(array $data) {
      return Validator::make($data, [
        'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
        'password' => ['required', 'string', 'min:8', 'confirmed']
      ]);
    }
    
    protected function create(array $data) {
      $validator = $this->validator($data);
    
      if ($validator->fails()) {
        session()->flash('alert-danger', 'error');
        
        // If this is an AJAX Request:
        if (request()->ajax()) {
          return response()->json(['errors' => $validator->errors()], 422);
        }
    
        // If this is a Form Submission:
        return back()->withErrors($validator->errors());
      } 
    
      $company = new Company();
      $company->store_name = $data['company_name'];
      $company->save();
    }
    

    Basically, modify your validator method to return the Validator::make() instance, check it in your create() method, and return appropriately based on if this is an AJAX Request or Form Submission.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search