2013-03-11 3 views
0

필드의 유효성 검사를 직접 수행해야하는 문제가 있습니다. 이제 양식에 5-6 개의 필드가 있습니다. 그래서 내 컨트롤러에서 각 하나를 확인하고 오류가 있다면 다시보기를로드하고 오류 배열을 전달하고 싶습니다. codeigniter를보기 위해 배열을 전달합니다.

나는이와 위의 기능을 달성 :

<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을 지정할 필요가 없습니다. 어떻게 할 수 있습니까? 한 사용자가 누락 된 모든 것을 보여줍니다.

답변

0

errors을보기에 바인딩하기 전에 컨트롤러에서 모든 검사를 수행하십시오.

내보기 파일에서
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 
    } 
} 

나는 각 오류를 호출 내가 사용 조언한다 모든

$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); 
3

먼저 CodeIgniter의의 폼 검증 클래스에 내장

여기

내가 일반적으로 컨트롤러 내 검증을 처리하는 방법입니다 이렇게 :

<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> 
관련 문제