Welcome Guest, Not a member yet? Register   Sign In
Input array problem in class validation
#1

Hello,

Sorry for the inconvenience, when migrating my applications from CI3 to CI4, validations with input form as array do not work. I am trying to correct the system / validation / validation.php file


Sorry for the English, I don't know much.

PHP Code:
This way it doesn't work 
VIEW
<?=form_input('
data_form[usuario]', '', 'class="form-control form-control-sm" placeholder="Usuario"');?>
<?=form_password('
data_form[password]', '', 'class="form-control form-control-sm" placeholder="Contraseña"');?>

<?=form_dropdown('
data_form[id_sucursal]', $opt_sucursal, '', 'class="form-control form-control-sm" placeholder="Sucursal"');?>

CONTROLLER
$this->validation->setRule('
data_form[usuario]', 'Usuario', 'trim|required');
$this->validation->setRule('
data_form[password]', 'Contraseña', 'trim|required');
$this->validation->setRule('
data_form[id_sucursal]', 'Sucursal', 'trim|required');
if(! $this->validation->withRequest($this->request)->run()){

This is how it works 
VIEW
<?=form_input('
usuario', '', 'class="form-control form-control-sm" placeholder="Usuario"');?>
<?=form_password('
password', '', 'class="form-control form-control-sm" placeholder="Contraseña"');?>

<?=form_dropdown('
id_sucursal', $opt_sucursal, '', 'class="form-control form-control-sm" placeholder="Sucursal"');?>

CONTROLLER
$this->validation->setRule('
usuario', 'Usuario', 'trim|required');
$this->validation->setRule('
password', 'Contraseña', 'trim|required');
$this->validation->setRule('
id_sucursal', 'Sucursal', 'trim|required');
if(! $this->validation->withRequest($this->request)->run()){ 
Reply
#2

hi there, the validation is not done with [] but with dots.

Like so:

https://codeigniter.com/user_guide/libra...are-arrays


So instead of foo[bar] your would use foo.bar.
Website: marcomonteiro.net  | Blog: blog.marcomonteiro.net | Twitter: @marcogmonteiro | TILThings: tilthings.com
Reply
#3

(This post was last modified: 07-02-2020, 08:44 AM by hugoafr.)

(07-02-2020, 01:15 AM)marcogmonteiro Wrote: hi there, the validation is not done with [] but with dots.

Like so:

https://codeigniter.com/user_guide/libra...are-arrays


So instead of foo[bar] your would use foo.bar.
Thank you very much friend,

I did not look at that detail in the manual, I will do the test.


I had come up with those solutions momentarily, but in the manual it was clear XD

PHP Code:
system validation validation.php,  function run()
            $value          dot_array_search($rField$data);
            $fieldNameToken explode('.'$rField);
            //temporary solution for me
            if (empty($value)){
                if (strpos($rField'[') > && strpos($rField,']') > 0){
                    //for data_form[field]
                    $rFieldfix str_replace(']'''str_replace('[','.',$rField));
                    //$rFieldfix  = 'data_form.field'; works with dot_array_search
                    $value  dot_array_search($rFieldfix$data);
                    $fieldNameToken explode('.'$rFieldfix);
                }
            }
            //temporary solution for me 
Reply




Theme © iAndrew 2016 - Forum software by © MyBB