CI 묻고 답하기

제목 좋은 아침입니다.
글쓴이 ぷ~たろ 작성시각 2009/08/04 11:30:40
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 26758   RSS
며칠을 고민하다가 그냥 처리했습니다.

글번호 596에 대한 저에 해결책.
해결책이기보다는 그냥 편법으로 목적에만 맞춰버렸습니다.


CI의 Load.php 클래스를 그냥 손 봐버렸습니다.

아래에 소스로 바꾸고. 모델을 로드할 때는 컨피그 파일에서 base_modules 변수에 경로 지정하고 사용합니다.
전체적으로는 아직 문제는 발생안하고 공유모델에 접근 가능하고, 특정모델에도 접근가능합니다.

function model($model, $name = '', $db_conn = FALSE)
	{		
		if (is_array($model))
		{
			foreach($model as $babe)
			{
				$this->model($babe);	
			}
			return;
		}

		if ($model == '')
		{
			return;
		}
	
		// Is the model in a sub-folder? If so, parse out the filename and path.
		
		if (strpos($model, '/') === FALSE)
		{
			$path = '';
		}
		else
		{
			$x = explode('/', $model);
			$model = end($x);			
			unset($x[count($x)-1]);
			$path = implode('/', $x).'/';
		}
	
		if ($name == '')
		{
			$name = $model;
		}
		
		if (in_array($name, $this->_ci_models, TRUE))
		{
			return;
		}
		
		$CI =& get_instance();
		if (isset($CI->$name))
		{
			show_error('The model name you are loading is the name of a resource that is already being used: '.$name);
		}
	
		$model = strtolower($model);
		$liketeens_path = '';

//--> 여기서 지정한 경로가 인식가능하도록 손봤습니다.
 		
		if ( ! file_exists(APPPATH.'models/'.$path.$model.EXT))
		{
			if ( ! file_exists($CI->config->item('base_modules') . $model.EXT)) {
				show_error('Unable to locate the model you have specified: '.$model);
			} else {
				
				$liketeens_path = $CI->config->item('base_modules') . $model.EXT;
			}
		} else {
			
			$liketeens_path = APPPATH.'models/'.$path.$model.EXT;
		}
				
		if ($db_conn !== FALSE AND ! class_exists('CI_DB'))
		{
			if ($db_conn === TRUE)
				$db_conn = '';
		
			$CI->load->database($db_conn, FALSE, TRUE);
		}
	
		if ( ! class_exists('Model'))
		{
			load_class('Model', FALSE);
		}

//--> 여기서 지정한 경로가 인식가능하도록 손봤습니다.
		
		//require_once(APPPATH.'models/'.$path.$model.EXT);
		require_once($liketeens_path);

		$model = ucfirst($model);
				
		$CI->$name = new $model();
		$CI->$name->_assign_libraries();
		
		$this->_ci_models[] = $name;	
	}

 다음글 각각 디렉토리를 나눠도 되나요? (9)
 이전글 Controller를 만들었는데 disallowed c... (3)

댓글

변종원(웅파) / 2009/08/04 12:22:25 / 추천 0
특정경로에서 먼저 찾고 없으면 원래 경로에서 찾기.
Loader.php를 직접 수정하지 마시고 application/libraries 에 Loader.php 라고 만드시면
코어를 건드리지 않고 원하시는 기능을 쓰실 수 있습니다.
나중에 코어가 업데이트 되도 코어만 업데이트 하시면 되거든요. ^^
ci세상 / 2009/08/04 13:41:25 / 추천 0
좋은 정보 감사드립니다.^^