Welcome Guest, Not a member yet? Register   Sign In
Redirect with error validation
#1

(This post was last modified: 04-15-2024, 03:53 AM by pippuccio76.)

hi this is my method :
Code:
    public function aggiungiDaProdotto($id_ddt){

        $data=[];

        $ddt_righe_inserite_model = new ddt_righe_inseriteModel();
        $ddt_model = new ddtModel();
        $prodotti_model = new ProdottiModel();

        $data['ddt'] = $ddt_model->find($id_ddt);


        if (($this->request->getMethod() === 'post')){

            $validation =  \Config\Services::validation();

            $rules=
            [

                                    'id_prodotti'=>[
                                                'label'=>'Id prodotti',
                                                'rules'=>'required|max_length[10]',
                                                'errors'=>[
                                                            'required'=>'{field} obbligatorio', 
                                                            'max_length'=>'Lunghezza massima  {field} {param}  caratteri'
                                                          ]
                                                ],
                                    'quantita'=>[
                                                'label'=>'Quantita',
                                                'rules'=>'required|max_length[10]',
                                                'errors'=>[
                                                            'required'=>'{field} obbligatorio', 
                                                            'max_length'=>'Lunghezza massima  {field} {param}  caratteri'
                                                          ]
                                                ],
                                  ];

            if($this->validate($rules)){

                $post = $this->request->getPost();


                $res=$ddt_righe_inserite_model->save($post);


                if($res) {


                    session()->setFlashdata('gestisciRecordOK', 'Inserimento correttamente effettuato');

                    return redirect()->to('/user_ddt_righe_inserite/lista_completa/');


                }else{

                    session()->setFlashdata('gestisciRecordBad', 'Problemi Inserimento Record');

                    return redirect()->to('/user_ddt_righe_inserite/lista_completa/');
                }                 

            }else{

                //$data['validation'] = $validation;

                return redirect()->to('user_ddt_righe_inserite/aggiungiManualmente/'.$id_ddt)->withInput();
            }

        }

        if (!isset($data['messaggi_errore']) AND !isset($data['messaggi_ok'])) {

            echo view('empty_view',$data);
            echo view('user/ddt_righe_inserite/aggiungiDaProdotto');

        }



    }
and this is my first view (aggiungiManualmente) :

Code:
<?= $this->extend('templates/layout_admin') ?>

<?= $this->section('custom_css') ?>
    <link rel="stylesheet" href=" <?=base_url('/assets/vendors/select2/select2.min.css') ?>">
    <link rel="stylesheet" href="<?=base_url('/assets/vendors/select2-bootstrap-theme/select2-bootstrap.min.css') ?>">



<?= $this->endSection() ?>

<?= $this->section('content') ?>




      <div class="card">
      <div class="card-header">
          <h4> Aggiungi  righe a Doa <?= $doa->numero ?> </h4>

      </div>
      <div class="card-body">
            <hr>


<div class="row">
   
    <div class="col-md-6">

      <h3 class="mb-4">Aggiungi Da prodotto</h3>
     
<?php
$attributes = array('class' => 'col-md-12 myform',
                    'id' => 'myform',
                    'name' => 'form_doa_righe_inserite',
                    'method' => 'POST',
        'onSubmit' => 'return controlla_e_invia();'

                    );
echo form_open (base_url() .'/user_Ddt_righe_inserite/aggiungiDaProdotto/'.$ddt->id,$attributes);

            ?>
        <?php if(!empty($validation) ) :?>


          <div class="alert alert-danger border-0 bg-danger  fade show py-2">
            <div class="d-flex align-items-center">
              <div class="font-35 text-white"><i class="bx bxs-message-square-x"></i>
              </div>
              <div class="ms-3">
                <div class="text-white"> <?= $validation->listErrors(); ?></div>
              </div>
            </div>
          </div>


          <?php endif; ?>


<!-- INIZIO id_prodotti -->

<div class='row '>

                          <div class='col-md-12'>

                              <div class="form-group">

                                <label class='col-md-12 col-xs-12 control-label'>Prodotto</label>
                                <div class='col-md-12 col-xs-12'>
                                <select id='id_id_prodotti'  class='form-select' name='id_prodotti'>
                                    <option value=''>Seleziona un valore...</option>
                                    <?php foreach ($tutti_id_prodotti as $v) :?>
                                        <option value='<?=$v->id ?>'
               
                                                <?php if($v->id==set_value('id_prodotti') ): ?>
               
                                                    selected='selected'
                                             
               
                                                <?php endif ?>
                                        >
               
                                            <?=$v->codice_articolo.' '.$v->descrizione ?>
               
                                        </option>
               
                                    <?php endforeach ?>
                                </select>
                              </div>
                              </div>
                          </div>
                      </div>
                     

<!-- FNE id_prodotti -->



        <span>note: * campi obbligatori</span>
      <div class='text-right'>
      <a href='<?= base_url() ?>' class='btn btn-danger'>Annulla</a>
      <button class='btn btn-info submit-btn' type='submit' onclick=''>
      <span class='indicator-label'>
            INSERISCI
        </span>
        <span class='indicator-progress'>
            Perfavore attendi... <span
                class='spinner-border spinner-border-sm align-middle ms-2'></span>
        </span>
     
      </button>      </div>
      <br>
</form>



    </div>
     


    <div class="col-md-6">

      <h3>Aggiungi da Ean</h3>
       
<?php
$attributes = array('class' => 'col-md-12 myform',
                    'id' => 'myform',
                    'name' => 'form_doa_righe_inserite',
                    'method' => 'POST',
        'onSubmit' => 'return controlla_e_invia();'

                    );
echo form_open (base_url() .'/user_Ddt_righe_inserite/aggiungiDaEan/'.$ddt->id,$attributes);

            ?>
        <?php if(!empty($validation) ) :?>


          <div class="alert alert-danger border-0 bg-danger  fade show py-2">
            <div class="d-flex align-items-center">
              <div class="font-35 text-white"><i class="bx bxs-message-square-x"></i>
              </div>
              <div class="ms-3">
                <div class="text-white"> <?= $validation->listErrors(); ?></div>
              </div>
            </div>
          </div>


          <?php endif; ?>


<!-- INIZIO id_prodotti -->

<div class='row'>

                          <div class='col-md-12'>
                              <label class='col-md-12 col-xs-12 control-label'>Ean</label>
                              <div class='col-md-12 col-xs-12'>
                                  <input type="text" name="ean" class="form-control">
                              </div>
                          </div>
                      </div>
                     

<!-- FNE id_prodotti -->



        <span>note: * campi obbligatori</span>
      <div class='text-right'>
      <a href='<?= base_url() ?>' class='btn btn-danger'>Annulla</a>
      <button class='btn btn-info submit-btn' type='submit' onclick=''>
      <span class='indicator-label'>
            INSERISCI
        </span>
        <span class='indicator-progress'>
            Perfavore attendi... <span
                class='spinner-border spinner-border-sm align-middle ms-2'></span>
        </span>
     
      </button>      </div>
      <br>
</form>


    </div>
     
</div>
 




          </div>
          </div>
       


<?= $this->endSection() ?>

<?= $this->section('script') ?>


<script type="text/javascript" charset="utf8" src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/js/select2.min.js"></script>


<script>

//######## Gestione Submit singolo ###########

$( document ).ready(function() {

  //nascondo lo spinner all'avvio
  $('.indicator-progress').hide();


  $('#id_id_prodotti').select2({
          theme: "bootstrap-5",
  });
})

$('.myform').on('submit', function(){
  $('.submit-btn').attr('disabled', true);
  $('.indicator-label').hide();
  $('.indicator-progress').show();
});


//######## END Gestione Submit singolo ###########



</script>

<?= $this->endSection() ?>

     
But when validation return errors the errors aren't show on view .Why ?
Reply
#2

Because there is no $validation in the view.

If you use redirct(), it tells the browser to make another request.
Reply
#3

(This post was last modified: 04-15-2024, 11:39 PM by pippuccio76.)

(04-15-2024, 05:23 PM)kenjis Wrote: Because there is no $validation in the view.

If you use redirct(), it tells the browser to make another request.

Code:
  <?php if(!empty($validation) ) :?>


          <div class="alert alert-danger border-0 bg-danger  fade show py-2">
            <div class="d-flex align-items-center">
              <div class="font-35 text-white"><i class="bx bxs-message-square-x"></i>
              </div>
              <div class="ms-3">
                <div class="text-white"> <?= $validation->listErrors(); ?></div>
              </div>
            </div>
          </div>


          <?php endif; ?>

this is $validation in view

how can i send $validation error back or to another page ?


ps i don't understand how insert code , use code tags isn't the best way ?
[/code]
Reply
#4

See this repository: https://github.com/kenjis/ci4-validation-tutorial
Reply
#5

(04-16-2024, 01:33 AM)kenjis Wrote: See this repository: https://github.com/kenjis/ci4-validation-tutorial


Code:
return redirect()->back()->withInput();


is not the same to
Code:
               



return redirect()->to('controller/method/'.$value)->withInput();
Reply




Theme © iAndrew 2016 - Forum software by © MyBB