0

我有自己验证字段的问题。现在表单中有 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 数组传递给 view 并在那里访问它包含的所有值。所以我不必指定 $fullname 或 $mobile 来获取值。如何才能做到这一点?为了向用户展示所有丢失的东西

4

2 回答 2

4

首先,我建议使用 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>
于 2013-03-11T16:24:25.343 回答
0

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

例如

$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); 
于 2013-03-11T14:59:41.857 回答