繁体   English   中英

CodeIgniter Form_validation无法正常工作

[英]CodeIgniter Form_validation not working

我在使用CodeIgniter创建的Web应用程序中创建用户时所用的表单验证存在问题。
我提交表单时所做的只是刷新页面(即使所有输入正确),也没有显示任何错误消息。 将验证规则放到控制器中而不是配置文件中,使我到达了可以提交表单并继续执行过程的地步,但没有进行任何验证就让我什至提交了一个空表单(正确地导致了DB错误)。
我的代码如下:

控制器

class Gen_client extends CI_Controller {

        public function __construct()
    {
            parent::__construct();
            //--------------------------------------------------------------------------------------------------------
            //Carico le funzione del DB necessarie

            $this->load->model('gen_client_model');

            //--------------------------------------------------------------------------------------------------------
            //Carico le librerie necessarie

            $this->load->library('form/generazione_credenziali');
            $this->load->library('form_validation'); //le regole ora sono fissate sotto config/form_validation.php
    }


        function index()
    { 
           //--------------------------------------------------------------------------------------------------------
            //Imposto tutte le regole per la validazione del form

            $this->form_validation->set_message('alpha', 'Il campo "%s" dev\'essere composto da sole lettere.');
            $this->form_validation->set_message('_check_numeric', 'Il campo "%s" dev\'essere composto da soli numeri.');
            $this->form_validation->set_message('min_length', '"%s" dev\'essere di almeno %s caratteri.');
            $this->form_validation->set_message('_valid_prefix', 'Il prefisso inserito non è valido! Per favore inserire il prefisso internazionale nel formato seguente: 00XXX. Es: 0041');

            //-----------------------------------------------------------------------------------
            //Parte di controllo e generazione della parte view

            $fv = $this->form_validation->run('gen_client');
            if($this->form_validation->run('gen_client') == false)
            {
                $this->load->view('templates/header', $data);
                $this->load->view('gen_client/gen_client', $data);
                $this->load->view('templates/footer');

                $msg = validation_errors();

                var_dump($msg);
                var_dump($fv);
            }
            else                                                    //se il sistema sta validando il form ritornerà poi una pagina di esportazione se la validazione va a buon fine
            {   
                $num    =   intval($this->input->post('num_utenti'));


                if($num !==null && $num !==0)           //controllo se si sta cercando di generare più credenziali
                {
                    $ids = $this->gen_client_model->addUsers($num, $this->session->userdata('id_dipendente'));
                    $this->session->set_userdata('ids', $ids);
                    $this->session->set_userdata('tipocli', $this->input->post('identificativo'));
                    $this->success();
                }
                else
                {
                    $ids = $this->gen_client_model->addUsers(1, $this->session->userdata('id_dipendente')); //inserisco solamente un utente
                    $this->session->set_userdata('ids', $ids);
                    $this->session->set_userdata('tipocli', $this->input->post('identificativo'));
                    $this->success();
                }
            }
    }

config文件夹中的表单验证规则

<?php
$config = array(
            'gen_client'=>array(
                        array(
                            'field'   => 'sigla', 
                            'label'   => 'Sigla',
                            'id'      => 'sigla',
                            'rules'   => 'min_length[3]|xss_clean|alpha'
                            ),
                        array(
                            'field'   => 'n_tel', 
                            'label'   => 'Numero di telefono', 
                            'rules'   => 'min_length[12]|callback__check_numeric|callback__valid_prefix'
                           )
                ),
        );

查看

echo form_open('', 'id="form_generazione" class="form-horizontal"'); ?>
    <div id="form" class="col-md-4 col-md-offset-4">
    <label>Tipo utente</label>
    <br />
    <?php        
        echo form_radio('identificativo', '1', '', 'onclick="radioChange(this)"');
        echo form_label('Numero di telefono','identificativo');
        echo "\t";
        echo form_radio('identificativo', '2', '' , 'onclick="radioChange(this)"');
        echo form_label('Sigla d\'accesso','identificativo');
    ?>
    <br />
    <div class="u_ev">
        <label>Evento</label>
        <?php
        echo '<div class="input-group input-group-sm">';
            echo '<span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span></span>';
            echo form_dropdown('evento', $evento, 1, 'id="event" class="input-sm" onchange="changeEvent()"'); //vengono mostrati solamente se il valore della durata è -1 (che equivale a "Illimitato")
            echo '</div>';
        ?>
    </div>
    <div class="u_gen">
        <label>Durata oraria</label>
        <?php
            echo form_error('durata', '<div class="alert alert-danger"><span class="glyphicon glyphicon-warning-sign"></span>   ', '</div>');
            echo '<div class="input-group input-group-sm">';
            echo '<span class="input-group-addon"><span class="glyphicon glyphicon-time"></span></span>';
            echo form_dropdown('durata', $durata,1, 'id="durata" class="input-sm"'); //ogni volta che viene cambiato il valore di durata verifica se è "Illimitato" per decidere se mostrare gli eventi o meno
            echo '</div>';
        ?>
    </div>
    <div class="u_log">
        <label>Numero utenti</label>
        <?php 
            echo form_error('num_utenti', '<div class="alert alert-danger"><span class="glyphicon glyphicon-warning-sign"></span>   '
                            , '</div>');
            echo '<div class="input-group input-group-sm">';
            echo '<span class="input-group-addon"><strong>#</strong></span>';
            echo form_input('num_utenti', set_value('num_utenti'), 'id="num_utenti" class="form-control" placeholder="Numero utenti.."');
            echo '</div>';
        ?>
        <br />
        <label>Sigla</label>
        <?php 
            echo form_error('sigla', '<div class="alert alert-danger"><span class="glyphicon glyphicon-warning-sign"></span>   ', '</div>');
            echo '<div class="input-group input-group-sm">';
            echo '<span class="input-group-addon"><span class="glyphicon glyphicon-user"></span></span>';
            echo form_input('sigla', set_value('sigla'), 'id="sigla" onkeyup="previewUser(this)" class="form-control" placeholder="Sigla.."'); //ad ogni pressione di un testo faccio aggiornare dinamicamente la preview
            echo '</div>';
        ?>
        <br />
        <label>Preview sigla utente</label>
        <?php 
            $prossimo = $this->generazione_credenziali->generateUname("",01);
            echo '<div class="input-group input-group-sm">';
            echo '<span class="input-group-addon"><span class="glyphicon glyphicon-arrow-right"></span></span>';
            echo form_input('prossimo_utente','', 'disabled id="prossimo_utente" class="form-control"'); //preview della sigla del prossimo utente che non è modificabile e non viene mandato in post
            echo '</div>';
        ?>
    </div>

    <div class="u_tel">
        <label>Numero di telefono</label>
        <?php        
            echo form_error('n_tel', '<div class="alert alert-danger"><span class="glyphicon glyphicon-warning-sign"></span>   ', '</div>');
            echo '<div class="input-group input-group-sm col-md-12">';
            echo '<span class="input-group-addon"><span class="glyphicon glyphicon-earphone"></span></span>';
            echo form_input('n_tel', '', 'id="n_tel" class="col-md-8 form-control" placeholder="00XXAABBBCCDD"');
            echo '</div>';
            echo '<small>Inserire il numero di telefono preceduto dal prefisso internazionale. Es: 0041 12 345 67 89</small>'
        ?>
    </div>
    <br />
    <?php
        echo form_submit('submit', 'Conferma', 'class="btn btn-default submit"');
    ?>

    <br />
    <?php
        echo form_close();
    ?>
    </div>

我为代码的格式感到抱歉,因为它似乎有些混乱。
即使我确定某个地方有些小错误,我也确实没有办法尝试纠正此错误。
提前谢谢大家。

您需要确保正确加载表单验证规则配置 ,然后在尝试验证之前设置规则

// Loads a config file named form_validation_rules.php
// and assigns it to an index named "form_validation_rules"
$this->config->load('form_validation_rules', TRUE);

// Retrieve a config item named "gen_client"
// contained within the form_validation_rules array
$validation_rules = $this->config->item('gen_client', 'form_validation_rules');

// Set the rules
$this->form_validation->set_rules($validation_rules);

// Run the validation
if($this->form_validation->run() == FALSE)
{
    // ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM