CodeIgniter:表单验证问题

时间:2011-08-29 12:10:40

标签: php validation codeigniter

我正在使用CodeIgniter来验证表单。一旦表单提交并且存在一些验证错误,我想形成以记住输入字段值。目前,我一次验证所有字段并且工作正常(即,如果验证失败,我可以在表单中获取输入字段值。

以下代码可以正常使用:

查看:

<?php if ( form_error('name') ) { ?>
    <input type="text" class="error" name="name" value="<?php echo set_value('name'); ?>"/>
    <?php echo form_error('name', '<p class="error">', '</p>'); 
} else { ?>
    <input type="text" name="name" value="<?php echo set_value('name'); ?>"/>
<?php } ?>

控制器:

function validate_form{

    $this -> form_validation -> set_rules( 'name', 'name', 'trim|required|' );
    $this -> form_validation -> set_rules( 'email', 'Email', 'trim|required|callback_email_available' );
    $this -> form_validation -> set_rules( 'captcha', 'captcha', 'callback_check_captcha' );

    if ( $this -> form_validation -> run() === FALSE ) 
    {
        $this -> load -> view( 'signup_view' );
    }
    else
    {
        //process form and insert to db.
    }   
}

我的问题:

现在,我不想采用上述方法(一次验证所有字段),而是首先要验证一个字段'验证码'。因此,如果验证了验证码字段,那么我想要对其他字段进行验证。否则我想返回表单并显示验证码错误,但我想保持其他字段值为输入字段,以便用户不必再次键入。

我正在尝试使用代码,但它无法正常工作。例如,当我提交表单时,字段似乎不记得值。 视图代码与上面相同。

我正在尝试但无效的代码:

$this -> form_validation -> set_rules( 'captcha', 'captcha', 'callback_check_captcha' );

if ( $this -> form_validation -> run() === FALSE ) 
    {
        $this -> load -> view( 'signup_view' );
    }   
else
    {
    $this -> form_validation -> set_rules( 'name', 'Name', 'trim|required|' );
    $this -> form_validation -> set_rules( 'email', 'Email', 'trim|required|callback_email_available' );

        if ( $this -> form_validation -> run() === FALSE ) 
            {
                $this -> load -> view( 'signup_view' );
            }
        else
            {
            //process form and insert to db.
        }

    }

3 个答案:

答案 0 :(得分:2)

请改为尝试:

set_value('name', $this->input->post('name'));

出于某种奇怪的原因,有时您只能使用$this->input->post()获取值,而不能使用$_POST[]

答案 1 :(得分:1)

如果您通过表单验证检查了这些值,则只会记住这些值。因此,无需任何规则即可将每个字段添加到表单验证中这样他们就不会检查他们的条件(规则),但会显示在输入字段中。

答案 2 :(得分:1)

将值传递给表单并手动显示的最佳方法

控制器

function validate_form{
 $this -> form_validation -> set_rules( 'name', 'name', 'trim|required|' );
 $this -> form_validation -> set_rules( 'email', 'Email',  'trim|required|callback_email_available' );
 $this -> form_validation -> set_rules( 'captcha', 'captcha', 'callback_check_captcha' );


 $repopulationData = $this->input->post(NULL, TRUE);

 if ( $this -> form_validation -> run() === FALSE ) 
 {
    $this -> load -> view( 'signup_view',$repopulationData );
 }
 else
{
    //process form and insert to db.
}   
}

查看

<form action='action page URL' method='post'>
<input type='text' name='name' value='<?php echo $name ?>'/>
<input type='text' name='email' value='<?php echo $email ?>'/>
<input type='text' name='captcha' value='<?php echo $captcha ?>'/>
<input type='submit' value='Save'/>
相关问题