dimanche 16 mai 2021

Laravel server side form validation, Validate field length(Size) with more than one option

I'm using ajax to make a server side form validation in laravel. All my validations are working fine except for one which i can figure out how to do it. Actually i have a field in my form for the ID number, which can take either 7 caracters for passport number, 9 caracters for ID card number or 20 caracters for temporary ID card number. How can i set a validation for size or lenght with 3 differents options?

function validation(e, f) {
  var x = document.getElementsByClassName("alert-danger");
  var y = "false";
  var i;
  $.ajaxSetup({
    headers: {
      'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
  });

  $.ajax({
    url: "/membre/modalValidation",
    method: "post",
    data: (e == 1) ? new FormData(document.getElementById("modal-danger4")) :
      new FormData(document.getElementById("modal-danger8")),
    processData: false,
    dataType: 'json',
    async: false,
    contentType: false,
    beforeSend: function() {
      $(document).find('.alert-danger').text('');
    },
    success: function(data) {
      if (data.status == 0) {
        $.each(data.error, function(prefix, val) {
          $('.m' + f + ' .' + prefix + '_error').text(val[0]);
        });
      } else {

      }
      for (i = 0; i < 30; i++) {
        if (x[i].innerHTML) {
          y = "true";
        }
      }
    }
  });
  return y;
}
public function modalValidation(Request $request)
    {
        $newDate = Carbon::now()->subYears(10);
        $validator = Validator::make($request->all(), [
            'firstname' => ['required'],
            'email' => ['required', 'unique:users', 'digits:9'],
            'phone' => ['nullable', 'unique:users', 'email:rfc,dns'],
            'email1' => ['required', 'unique:client__ents,email', 'digits:9'],
            'phone1' => ['nullable', 'unique:client__ents,phone', 'email:rfc,dns'],
            'name' => ['required'],
            'job' => ['required'],
            'CNI_number' => ['required', 'unique:users', 'digits_between:7,20'],
            'CNI_date' => ['required', 'date_format:d/m/Y', 'after:'.$newDate],
            'CNI_place' => ['required'],
            'raison_sociale' => ['required'],
            'forme_juridique' => ['required'],
            'siteWeb' => ['nullable', 'url'],
            'activité' => ['required'],
            'num_contribuable' => ['required', 'unique:client__ents,Numero_contribuable', 'between:13,14'],
            'NC_date' => ['required', 'date_format:d/m/Y', 'after:'.$newDate],
            'siège' => ['required'],
            'email2' => ['required', 'unique:responsable_ents,email', 'digits:9'],
            'phone2' => ['nullable', 'unique:responsable_ents,phone', 'email:rfc,dns'],
            'CNI_number1' => ['required', 'unique:responsable_ents,CNI_number', 'digits_between:7,20'],
            'password' => ['required', 'min:8'],
            'confirm_password' => ['same:password'],
            'checkbox' => ['accepted'],
        ],
        ['confirm_password.same' => 'Ne correspond pas',
        'accepted'=>'Veuillez cocher la case avant de continuer',
        'required'=>'Ce champ est obligatoire',
        'phone.unique'=>'Un utilisateur avec ce mail existe déjà',
        'email.unique'=>'Un utilisateur avec ce numéro existe déjà',
        'phone1.unique'=>'Un utilisateur avec ce mail existe déjà',
        'email1.unique'=>'Un utilisateur avec ce numéro existe déjà',
        'phone2.unique'=>'Un responsable avec ce mail existe déjà',
        'email2.unique'=>'Un responsable avec ce numéro existe déjà',
        'CNI_number.unique'=>'Un utilisateur avec ce numéro de CNI existe déjà',
        'CNI_number1.unique'=>'Un responsable avec ce numéro de CNI existe déjà',
        'num_contribuable.unique'=>'Un utilisateur avec ce numéro de contribuable existe déjà',
        'digits'=>'Veuillez saisir un numéro valide à 9 chiffres',
        'digits_between'=>'Numéro CNI(Passeport) non-conforme',
        'email'=>'Ce mail est invalide. Doit inclure @',
        'date_format'=>'Invalide. Veuillez saisir une date',
        'CNI_date.after'=>'Votre CNI ou Passeport ou Récépissé est expiré',
        'NC_date.after'=>'Votre Numéro de contribuable est expiré',
        'url'=>'Invalide. Veuillez saisir un URL',
        'password.min'=>'Minimum 8 caractères',
        'num_contribuable.between'=>'Numéro de contribuable non-conforme',
    ]);
   
        if ($validator->fails())
        {
            return response()->json(['status'=>0, 'error'=>$validator->errors()->toArray()]);
        }
    }
<div class="modal-body step-2 m2">
  <center>
    <h4>Pièce d'identité</h4>
  </center>
  <div class="form-group">
    <label>Numéro CNI(ou Passeport)<i style="color:#FF0000">*</i> :</label>

    <input type="number" name="CNI_number" class="form-control" placeholder="Entrer le numéro CNI">
    <div class='alert-danger CNI_number_error'></div>
  </div>
  <div class="form-group">
    <label>Date de délivrance<i style="color:#FF0000">*</i> :</label>

    <input id="demo-one-input" name="CNI_date" class="form-control" placeholder="Entrer la date">
    <div class='alert-danger CNI_date_error'></div>
  </div>
  <div class="form-group">
    <label>Lieu de délivrance<i style="color:#FF0000">*</i> :</label>

    <input type="text" name="CNI_place" class="form-control" placeholder="Entrer le lieu">
    <div class='alert-danger CNI_place_error'></div>
  </div>
  <div class="form-group">
    <label>Votre photo :</label>

    <input type='file' accept="image/*" name="photo" class="form-control" placeholder="image portrait">
  </div>
  <div class="form-group">
    <i style="color:#FF0000">*</i> Champs obligatoires
  </div>
</div>


via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire