2012-11-30 3 views
0

HMVC에서 Codeigniter를 사용하고 있습니다.Codeigniter HMVC 유효성 검사 콜백 오류

1.Extends CI_Form_validation : 내 컨트롤러에서

<?php 
    // application/libraries/My_Form_validation.php 

    class MY_Form_validation extends CI_Form_validation { 

    public $CI; 

    } 

?> 
  1. :

클래스 사용자가 확장 내 양식을 확인할 때 , 나는 HMVC의 콜백 문제를 해결하기 위해 솔루션을 사용 MX_Controller {

function __construct() { 
    parent :: __construct(); 
    $this->load->library('form_validation'); 
    $this->form_validation->CI = & $this; 

} 

내 문제는 : 내 로컬 호스트에서 모든 것이 정상입니다 : 콜백 유효성 검사가 정상적으로 실행됩니다. 하지만 호스트에 프로젝트를 업로드 할 때 컨트롤러가 비어있는 것처럼 보입니다. 내가 주석을 달 때

//$this->form_validation->CI = & $this; 

컨트롤러가 정상적으로 다시 작동합니다.

이 문제를 어떻게 해결할 수 있습니까? 도움 주셔서 감사합니다.

+2

빈 페이지는 대개 치명적인 오류이므로 오류 로그에 오류를 표시하십시오. – MrCode

답변

0

치명적인 오류에 대한 오류 로그를 확인, 또한 내 양식 유효성 검사 이러한 방식으로

class MY_Form_validation extends CI_Form_validation { 
     private $CI 

     function My_Form_validation($config = array()) { 

     parent::__construct($config); 
     $this->CI = &get_instance() 

    } 

    //example functions 
    function my_custom_validation(str){ //or override , for example, required 
     if($this->CI->method_from_instance()){ 
     return true; 
     } 
    return false 
    } 

} 

을 확장해야하며, 평소의 방법대로 다음 form_validation를 사용하지만, 지금은 별도의 규칙 my_custom_validation이

편집 : 어떤 경우에 한해 유선 이유로 (예 : $ this) 라이브러리에 컨트롤러 함수를 사용하려면 일단 라이브러리를로드 한 후 config로 전달하십시오. $this->load->library('form_validation', array(('ci'=>$this) //하지만 왜 그렇게 할 수 있는지 모르겠다.