2014-12-26 6 views
0

로그인에 대한 동일한 구현이 있고 작동하지만 내 문의 양식에서는 그렇지 않습니다. 오류 메시지가 홈 페이지로 다시 라우팅됩니다.Codeigniter 유효성 검사 양식이 작동하지 않습니다.

public function index() {  
    $this->myprocess();  
} 

내보기

<?php 
    $attributes = array('class' => 'form-contact', 'id' => 'myform2'); 
    echo form_open('contact',$attributes); 
?> 

를 사용하는 대신 호출 내 기능은 모든 검증 작업 myprocess하지만 없음 사용 : 내 컨트롤러에서 나는 인덱스 같은 기능을 구현하는 경우 이상한 일이다 양식을 내 머리글 바닥 글 등

내가 어떻게 작동하도록 내 코드를 원한다면 나는 yall이 나를 도울 수 있기를 바랍니다.

내 컨트롤러 :

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class contact extends CI_Controller { 

    function __construct() 
    { 
     parent::__construct(); 
     $this->load->model('contact_m'); 
    } 

    public function index() 
    {  
     $data = array('title' => 'Contact', 'main_content' => 'contact_v'); 
     $this->load->view('template', $data); 

    } 

    public function myprocess(){  


     $this->form_validation->set_rules('dfname', 'Name', 'required|trim|xss_clean|max_length[40]');   
     $this->form_validation->set_rules('dfemail', 'Email', 'required|trim|xss_clean|valid_email|max_length[50]|callback__verifyemail');   
     $this->form_validation->set_rules('dfmsg', 'dfmsg', 'trim|xss_clean'); 

     $this->form_validation->set_error_delimiters('<br /><span class="error">', '</span>'); 

     if ($this->form_validation->run() == FALSE) // validation hasn't been passed 
     { 
      $this->load->view('contact_v'); 
     } 
     else 
     { 
      $form_data = array(
          'dfname' => set_value('dfname'), 
          'dfemail' => set_value('dfemail'), 
          'dfmsg' => set_value('dfmsg') 
          ); 

      if ($this->contact_m->SaveForm($form_data) == TRUE) 
      { 
      redirect('contact/success'); 
      } 
      else 
      { 
      echo 'An error occurred saving your information. Please try again later'; 
      } 
     } 
    } 

    function success() 
    { 
      echo 'this form has been successfully submitted with all validation being passed. All messages or logic here. Please note 
      sessions have not been used and would need to be added in to suit your app'; 
    } 

    public function verifyemail(){ 
     $name = $this->input->post('dfName'); 
     $pass = $this->input->post('dfemail'); 

     if($this->contact_m->email_exist($name,$pass)){ 
      if ($this->session->userdata('site_lang') == 'portuguese') 
      { 
       $this->form_validation->set_message('_verifyuser','Usuario Inexistente!'); 
      }else{ 
       $this->form_validation->set_message('_verifyuser','User Not Found!'); 
      } 
      $this->index(); 
      return false; 

     }else{       
      return true;    
     } 
    } 
}  

?> 

내보기 :

<div class="container"> 
    <div class="row"> 
     <div class=" col-md-4 col-md-offset-4"> 
      <?php echo br(2)?> 
      <div class="account-wall drop-shadow"> 

      <?php 
       $title = $this->my_library->my_title($this->session->userdata('site_lang'),FORM_CONTACT); 
       echo '<h1 class="text-center login-title">'. $title. '</h1>'; 
       echo br(1) 
      ?> 

       <?php 
        $attributes = array('class' => 'form-contact', 'id' => 'myform2'); 
        echo form_open('contact/myprocess',$attributes); 
       ?> 

       <p> 
        <label for="dfname">Name</span></label> 
        <?php echo form_error('dfname'); ?> 
        <input id="dfname" type="text" class="form-control" placeholder="Name" name="dfname" maxlength="40" value="<?php echo set_value('dfname'); ?>" autofocus /> 
        <?php echo br(1)?> 
       </p> 
       <p> 
        <label for="dfemail">Email</span></label> 
        <?php echo form_error('dfemail'); ?> 
        <input id="dfemail" type="text" class="form-control" placeholder="Email" name="dfemail" maxlength="50" value="<?php echo set_value('dfemail'); ?>" /> 
        <?php echo br(1)?> 
       </p> 
       <p> 
        <label for="dfmsg">Message</label> 
        <?php echo form_error('dfmsg'); ?> 
        <?php echo form_textarea(array('name' => 'dfmsg', 'rows' => '4', 'cols' => '43', 'value' => set_value('dfmsg')))?> 
        <?php echo br(1)?> 
       </p> 
       <p> 
        <?php echo form_submit('submit', 'Submit'); ?> 
       </p> 
       <?php form_close();?> 
      </div> 
     </div> 

    </div> 
</div> 
<?php echo br(5)?> 
+0

$ this-> load-> library ('form_validation')을 찾을 수 없습니다. 당신의 코드에서 –

+0

나는 내 autoloader.php에로드했다. 비록 내 컨트롤러에 이것을 추가하더라도 : function __construct() { parent :: __ construct(); $ this-> load-> library ('form_validation'); \t \t $ this-> load-> database(); \t \t $ this-> load-> helper ('form'); \t \t $ this-> load-> helper ('url'); \t \t $ this-> load-> model ('contact_m'); } 작동하지 않을 경우 내 꺼내십시오 –

+0

코드에서 홈 페이지로 리디렉션되어야하는 내용이 표시되지 않습니다. application/config/routes.php가 올바르게 설정되어 있습니까? – versalle88

답변

0

요즘 모든 코드를 검토 한 후 모든 코드를 다시 작성하면 문제가 발견되었습니다. 어떤 이유로이 줄이 잘 작동하지 않습니다 : echo form_close(); 그래서 내 첫 번째 양식은 어쨌든 열심히 엉망으로 만들었다.

0

검증을위한 콜백 함수는 접두사 이름에 밑줄이 필요합니다

public function _verifyemail() 

를하고 프로세스를 호출 할 필요가 기능 :

public function index() 
    {  
     $data = array('title' => 'Contact', 'main_content' => 'contact_v'); 
     if($this->input->post()) 
      $this->myprocess(); 
     $this->load->view('template', $data); 

    } 
+0

나는 그 변화를 만들지 만 나에게 제출과 아무 유효성 검사도 에러 메시지가 없다. –

+0

뷰 파일에서 validation_errors 함수를 사용하여 오류를 인쇄해야합니다.

+0

나는 모든 것을 다 해냈고 작동하지 않는다. –

관련 문제