传递数组以查看codeigniter

时间:2013-03-11 14:56:03

标签: codeigniter codeigniter-2

我有自己验证字段的问题。现在表格中有5-6个字段。所以我在我的控制器中检查每一个,如果有错,我希望再次加载视图并将错误数组传递给它。

我用这个实现了上述功能:

<html>
<head>
<title>My Form</title>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>

</head>
<body>


<?php
    echo $fullname;
?>

<?
 echo form_open('/membership/register');    
?>


<h5>Username</h5>
<input type="text" name="username" value="" size="50" />

<h5>Password</h5>
<input type="text" name="password" value="" size="50" />

<h5>Password Confirm</h5>
<input type="text" name="cpassword" value="" size="50" />

<h5>Email Address</h5>
<input type="text" name="email" value="" size="50" />

<h5>Mobile</h5>
<input type="text" name="mobile" value="" size="15" />

<h5>Home</h5>
<input type="text" name="home" value="" size="15" />

<h5>Full Name</h5>
<input type="text" name="fullname" value="" size="100" />
<br><br>
<div><input type="submit" value="Submit" /></div>

</form>

</body>
</html>

在控制器中代码为:

            if (preg_match('#[0-9]#',$fullname))
            { 
                $errors['fullname'] = 'wrong name format!';
                $this->load->view('register', $errors); 
            }

现在我遇到的真正问题是如果许多字段都错了。我希望传递$ errors数组来查看并访问它包含的所有值。所以我不必指定$ fullname或$ mobile来获取值。如何才能做到这一点?为了向用户显示一次性丢失的所有内容

2 个答案:

答案 0 :(得分:3)

首先,我建议使用codeigniter的内置表单验证类

以下是我通常在控制器中处理验证的方法:

if ($this->input->post()) 
{
    // process the POST data and store accordingly
    $this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[5]|xss_clean');
    $this->form_validation->set_rules('password', 'Password', 'trim|required|min_length[6]|xss_clean');
    // the rest of your form fields validation can be set here
    if ($this->form_validation->run() == FALSE)
    {
        // validation hasnt run or has errors, here just call your view
        $this->load->view('same_view_file_with_the_form', $data);
    }
    else
    {
        // process the POST data upon correct validation
    }
}

在我的视图文件中,我将这样的错误称为:

<h5>Username</h5>
<input type="text" name="username" value="" size="50" />
<span class="error-red"><?php echo form_error("username"); ?></span>
<h5>Password</h5>
<input type="text" name="password" value="" size="50" />
<span class="error-red"><?php echo form_error("password"); ?></span>
<h5>Password Confirm</h5>
<input type="text" name="cpassword" value="" size="50" />
<span class="error-red"><?php echo form_error("cpassword"); ?></span>

答案 1 :(得分:0)

在将errors绑定到视图之前,在控制器中执行所有检查。

e.g。

$errors = array();

if (preg_match('#[0-9]#',$fullname))
{ 
    $errors['fullname'] = 'wrong name format!';
}

if ( do_something_to_validate(mobile) )
{
    $errors['mobile'] = 'invalid mobile';
}

// after checking everything do this
$this->load->view('register', $errors);