RPeraltaJr
7/26/2019 - 3:53 PM

Storing Data (Validations and Formatting)

<?php 

public function store() {

    function cleanInput($data) {
      $data = ucwords(strtolower($data));
      $data = trim($data); // remove whitespaces from both sides of a string
      $data = stripslashes($data); // removes backslashes
      $data = htmlspecialchars($data, ENT_QUOTES, 'UTF-8'); // converts some predefined characters to HTML entities (ex. & to &amp;)
      return $data;
    }

    // validations
    $attributes = request()->validate([
      'first_name'    => ['required', 'min:3', 'max:255', 'regex:/^[a-zA-Z\s]*$/'], // only letters & spaces allowed
      'last_name'     => ['required', 'min:3', 'max:255', 'regex:/^[a-zA-Z\s]*$/'],
      'city'          => ['required', 'min:3', 'regex:/^[a-zA-Z\s]*$/'],
      'state'         => ['required', 'min:2', 'max:2', 'regex:/^[a-zA-Z\s]*$/'],
      'zipcode'       => ['required', 'min:5', 'max:5'],
      'email'         => ['required', 'min:3', 'max:255'],
      'phone'         => ['required', 'min:10'],
      'cdla'          => ['required', 'min:2'],
      'experience'    => ['required', 'min:2'],
      'confirm'       => ['required']
    ]);

    // format the data
    $attributes['first_name'] = cleanInput($attributes['first_name']);
    $attributes['last_name'] = cleanInput($attributes['last_name']);
    $attributes['city'] = cleanInput($attributes['city']);
    $attributes['state'] = strtoupper(cleanInput($attributes['state']));
    $attributes['email'] = strtolower(cleanInput($attributes['email']));
    $attributes['cdla'] = cleanInput($attributes['cdla']);
    $attributes['experience'] = cleanInput($attributes['experience']);

    // update or create (to prevent duplicate entries)
    Submission::updateOrCreate($attributes);
    return redirect('/thank-you');
}