CodeIgniter Forums
Rules in for loop - Printable Version

+- CodeIgniter Forums (https://forum.codeigniter.com)
+-- Forum: CodeIgniter 4 (https://forum.codeigniter.com/forumdisplay.php?fid=28)
+--- Forum: CodeIgniter 4 Support (https://forum.codeigniter.com/forumdisplay.php?fid=30)
+--- Thread: Rules in for loop (/showthread.php?tid=87956)



Rules in for loop - pippuccio76 - 06-27-2023

HI hi have 200 field named serial_1 , serial_2,serial_3 .... serial_200
Can i write rule with for loop ?


RE: Rules in for loop - JustJohnQ - 06-27-2023

Is this related to: https://forum.codeigniter.com/showthread.php?tid=87898 ?
I suggest to rename your fieldnames to serial[1], serial[2], serial[3], ... , serial[200]
To validate those fields, see:
https://forum.codeigniter.com/showthread.php?tid=82985


RE: Rules in for loop - pippuccio76 - 06-27-2023

Work , but how can i set custom error message :

Code:
                                    'seriale.*'=>[
                                                'label'=>"Seriale.*",
                                                'rules'=>'seriale_corretto_cambio_clienti|permit_empty',
                                                'errors'=>[

                                                            'seriale_corretto_cambio_clienti'=>'{field} non è un seriale corretto',

                                                          ]
                                    ],


How can set label properly to show the correct field with problem ?


RE: Rules in for loop - JustJohnQ - 06-27-2023

I am guessing now, but maybe like this:
https://codeigniter.com/user_guide/libraries/validation.html#getting-all-errors


RE: Rules in for loop - pippuccio76 - 06-27-2023


(06-27-2023, 07:54 AM)pippuccio76 Wrote: [quote="JustJohnQ" pid="410743" dateline="1687874459"]
I am guessing now, but maybe like this:
https://codeigniter.com/user_guide/libraries/validation.html#getting-all-errors

This is my error :

Code:
[list][*]Seriale 1 obbligatorio
[*]Seriale.* non è un seriale corretto
[*]Seriale.* non è un seriale corretto
[*]Seriale.* non è presente in magazzino
[*]Seriale.* non è un seriale corretto
[/list]

Seriale 1 have a separated rules (required) , i add a another custom rules for every seriale


RE: Rules in for loop - pippuccio76 - 06-28-2023

(06-27-2023, 07:54 AM)pippuccio76 Wrote:
(06-27-2023, 07:54 AM)pippuccio76 Wrote:
(06-27-2023, 07:00 AM)JustJohnQ Wrote: I am guessing now, but maybe like this:
https://codeigniter.com/user_guide/libraries/validation.html#getting-all-errors

This is my error :

Code:
[list][*]Seriale 1 obbligatorio
[*]Seriale.* non è un seriale corretto
[*]Seriale.* non è un seriale corretto
[*]Seriale.* non è presente in magazzino
[*]Seriale.* non è un seriale corretto
[/list]

Seriale 1 have a separated rules (required) , i add a another custom rules for every seriale
How can i show  " Seriale 1 ( or Seriale[1] ) non è un seriale Corretto" instead  "Seriale.* non è un seriale Corretto" ? i have 200 rows , find the error is a problem...


[SOLVED] Rules in for loop - pippuccio76 - 07-03-2023

SOLVED:
Change input name as seriale_1 ,seriale_2, ....seriale_200

Change rule as :

Code:
            for ($i = 1; $i <=200 ; $i++) {

                $rules['seriale_'.$i]= [
                                              
                                                'rules'=>'seriale_corretto_cambio_clienti|macchina_is_present_Picking|permit_empty',
                                                'errors'=>[

                                                            'seriale_corretto_cambio_clienti'=>"Seriale $i non è un seriale corretto",
                                                            'macchina_is_present_Picking'=>'Seriale $i  non è presente in magazzino ',

                                                          ]
                                        ];
               
            }



RE: Rules in for loop - pippuccio76 - 07-04-2023

The problem is when i must send more parameter as array...


RE: Rules in for loop - pippuccio76 - 07-05-2023

(07-04-2023, 05:07 AM)pippuccio76 Wrote: The problem is when i must send more parameter as array...

I create a custom validation for update :


Code:
        /**
  * Funzione che controlla se è presente il seriale in altri pallet
  */
    public function seriale_presente_altri_pallet_on_update(string $str,string $fields, array $data)
    {
        $pancali_picking_model  = new Pancali_pickingModel();
        $macchina_model = new MacchinaModel();

        //dd($data);

        //variabile per validazione
        $validazione= true ;

        //variabile per immagazzinare il seriale delle macchine
        $error_message = '';

        //ciclo tutte le macchine
        for ($i = 1; $i <=18 ; $i++) {
           
            if(isset($data['id_macchina_'.$i]) AND $data['id_macchina_'.$i]!=''){

                $macchina = $macchina_model->where('seriale',$data['id_macchina_'.$i])->first();

                if($macchina){

                    $id_macchina = $macchina->id;

                    $pancali = $pancali_picking_model->where('id!=',$data['id'])
                                                    ->groupStart()
                                                    ->where('id_macchina_1',$id_macchina)
                                                    ->orWhere('id_macchina_2',$id_macchina)
                                                    ->orWhere('id_macchina_3',$id_macchina)
                                                    ->orWhere('id_macchina_4',$id_macchina)
                                                    ->orWhere('id_macchina_5',$id_macchina)
                                                    ->orWhere('id_macchina_6',$id_macchina)
                                                    ->orWhere('id_macchina_7',$id_macchina)
                                                    ->orWhere('id_macchina_8',$id_macchina)
                                                    ->orWhere('id_macchina_9',$id_macchina)
                                                    ->orWhere('id_macchina_10',$id_macchina)
                                                    ->orWhere('id_macchina_11',$id_macchina)
                                                    ->orWhere('id_macchina_12',$id_macchina)
                                                    ->orWhere('id_macchina_13',$id_macchina)
                                                    ->orWhere('id_macchina_14',$id_macchina)
                                                    ->orWhere('id_macchina_15',$id_macchina)
                                                    ->orWhere('id_macchina_16',$id_macchina)
                                                    ->orWhere('id_macchina_17',$id_macchina)
                                                    ->orWhere('id_macchina_18',$id_macchina)
                                                    ->groupEnd()
                                                    ->findAll();


                    if(count($pancali)){

                        (.=' '.$macchina->seriale.'-';

                        $validazione= false ;

                    }

                   
                }
               
            }

        }   

        return $validazione;

    }//end seriale_presente_altri_pallet_on_update

Can i return an error message from this function($error_message) + true or false ?