제목 | library호출시 문제가 되는 부분 질문좀 .. | ||
---|---|---|---|
글쓴이 | neo천 | 작성시각 | 2014/01/03 10:16:23 |
|
|||
//다들 새해복 많이 받으시구.. 좀 길더라도 꼭 답변좀 부탁드릴게요 ㅠㅠ <!--?php //파일위치 controllers class AdminSetThird_con extends CI_Controller
{
private $securityFunc;
function __Construct()
{
parent::__Construct();
$this->init();
}
.
.
.
"생략"
.
.
private function init()
{
$this->load->helper(array('form' , 'url'));
$this->load->model('model_mng' , 'mObjCustomer');
$this->load->model('model_mng' , 'mObjUser');
$this->load->model('model_mng' , 'mObjPut');
$this->mObjCustomer->setModelMNG(new CustomerInfo_model);
$this->mObjUser->setModelMNG(new UserInfo_model);
$this->mObjPut->setModelMNG(new PutInfo_model);
$this->load->library('form_validation');
$this->load->library('securityfunc');
}
}
?>
<!--?php//파일위치 libraries
class securityfunc extends CI_Controller
{
function __Construct()
{
parent::__Construct();
}
public function CheckGrade($user)
{
$grade = $this->session->userdata('grade');
if($grade != $user)
{
$notice['notice'] = "로그인하세요";
header("..생략..");
break;
}
}
}
?>
맨위의 AdminSetThird_con 클래스에서
초기화시 securityfunc 클래스를 라이브러리에서 불러옵니다.
문제는 $this->load->library('securityfunc'); 하면 화면이 뜨질 않습니다. 주석처리하면 뜨고요.
$this->load->library('uploadimg_con');은 되는데..말이죠..ㅠㅠ
밑에 uploadimg_con 입니다. <!--?php파일위치 libraries
class uploadimg_con extends CI_Controller
{
function __Construct()
{
parent::__Construct();
$c>
$this->load->library('upload', $config);
}
..생략..
}
?>
두 클래스에서 문제는 없어보이는데..잘못된부분이 있는건가요?
제가 의도한것은 제가 만든 클래스를 라이브러리 불러오듯이 호출할려고하는데..
uploadimg_con는 되는데 securityfunc은 잘안되네요.
//참고 : 두 클래스 모두 소문자를 사용한 이유는 uploadimg_con를 이런식으로 사용해도 되길래 securityfunc도 네이밍 문제인가해서 소문자로 바꿨습니다. uploadimg_con는 다른 클래스에서 잘사용하고있습니다. 그래서 다른 방법을 쓸려고 이런식으로..
2번째방법
<!--?phprequire_once 'securityFunc.php';
//파일위치 controllers
class AdminSetThird_con extends CI_Controller
{
private $securityFunc;
function __Construct()
{
parent::__Construct();
$this->init();
$this->securityFunc->CheckGrade(ADMIN);
}
private function init()
{
$this->load->helper(array('form' , 'url'));
$this->load->model('model_mng' , 'mObjCustomer');
$this->load->model('model_mng' , 'mObjUser');
$this->load->model('model_mng' , 'mObjPut');
$this->mObjCustomer->setModelMNG(new CustomerInfo_model);
$this->mObjUser->setModelMNG(new UserInfo_model);
$this->mObjPut->setModelMNG(new PutInfo_model);
$this->load->library('form_validation');
$this->securityFunc = new SecurityFunc;
}
}
?>
<!--?php//파일위치 controllers
class SecurityFunc extends CI_Controller
{
function __Construct()
{
parent::__Construct();
}
public function CheckGrade($user)
{
$grade = $this->session->userdata('grade');
if($grade != $user)
{
$notice['notice'] = "로그인하세요";
header("..생략..");
break;
}
}
}
?>
두 클래스 모두 controllers 폴더에 만들고
$this->securityFunc = new SecurityFunc;식으로 햇죠.
작동은 잘됩니다. 문제는 이런식으로 하니까 form_validation에서 폼검증
되던 부분에서 검증은 하는데 form_error(..생략..);에 값이 안찍히더군요.
require_once 'securityFunc.php';
$this->securityFunc = new SecurityFunc;
$this->securityFunc->CheckGrade(ADMIN);
위 부분들을 주석처리면 form_error(..생략..);은 잘 작동하구요.
다시 정리해서 질문드릴게요.
1)생성을 할때 모델 $this->load->model과
제가 만든 클래스를 $this->load->library하는 것에 상관관계가 있는가요?
생성 순서라던지..어떤 문제라던지.. 2)1번째 방법에서 $this->load->library할때
securityfunc 클래스를 호출하면 화면이 안뜨고
uploadimg_con 클래스를 호출하면 화면이 잘떠요. form_error(PRODUCT_NAME)값은 안찍히구요.
securityfunc가 안된다는 말은 클래스가 틀렸을 가능성이 있는데..
2개의 클래스중에 특별히 틀린 부분이 안보이는데 왜그런지 모르겠네요.. 3)그리고 2번째 방법에서 form_validation은 왜 form_error(..생략..)이 안찍히는 걸까요?
//참고: 밑에 부분은 참고하시라고 남기는거에요.
private function init()
{
$this->load->helper(array('form' , 'url'));
$this->load->model('model_mng' , 'mObjProduct');
$this->load->library(array('uploadimg_con' , 'form_validation'));
$this->mObjProduct->setModelMNG(new ProductInfo_model);
$this->securityFunc = new SecurityFunc;
}
다른 클래스의 초기화 부분인데
$this->load->model을 호출한 후에
$this->securityFunc = new SecurityFunc;를
호출하면 정상작동하나 반대로 $this->securityFunc = new SecurityFunc;를 먼저
$this->load->model를 후에 호출하면 모델을
사용할때 에러가 생기더군요..그래서 1)번 질문을 드린거구요..
만드는 내내 이런 부분에서 문제가 생겨서
이번엔 꼭 알고 넘어가고 싶네요 ㅠㅠ
친절한 답변 부탁드릴게요 ㅠㅠ..
|
|||
다음글 | pdf파일 업로드후 화면에 출력에 대해서 질문합니다 (1) | ||
이전글 | 회원가입에 관한 질문 (3) | ||
변종원(웅파)
/
2014/01/03 10:26:24 /
추천
0
|
neo천
/
2014/01/03 10:48:49 /
추천
0
죄송합니다 사실 메뉴얼을 계속 봐왔지만 어느 부분이 잘못된지를 잘못찾겠습니다.
방금도 다시 한번보고 왔지만 잘모르겠네요. CodeIgniter 리소스를 여러분의 라이브러리와 함께 사용하기이부분이 좀 걸리는데..제가만든 라이브러리 클래스는 CI_Controller를 상속했기 때문에 문제가 되는건지요.. 좀더 자세히 짚어주시면 감사하겠습니다 ㅠ 어느부분이 걸리는지만 짚어주셔도 제가 해결하도록 노력해볼게요 |
변종원(웅파)
/
2014/01/03 10:50:41 /
추천
0
클래스는 반드시 아래의 프로토타입 형태를 따라야합니다.(Note: Someclass 이라는 이름은 예를 든것입니다.): <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 여러분의 클래스를 사용하기어떤 여러분의 콘트롤러 함수에서도 여러분의 클래스를 아래와 같이 초기화 할수 있습니다.: $this->load->library('someclass');
|
neo천
/
2014/01/03 11:18:13 /
추천
0
네이밍에서 정확히 무슨 문제가 되는지를 잘모르겠네요.
클래스명을 class security_func 이런식으로 '_'를 추가했을뿐인데 작동을 하네요. 대소문자 class S(s)ecurity_func구분없이 다 되구요.. 이부분이 해결되도.. 왜 폼검증은 제대로 작동하는데 form_error(..생략..)에서 값을 못찍는지는.. 모르겠네요.(폼검증할때 콜백함수를 호출하는데 제대로 호출하는거는 확인했어요) |
neo천
/
2014/01/03 13:05:05 /
추천
0
새해복 많이 받으세요.
제가만든 라이브러리 class security_func는 extends CI_Controller처럼 CI상속을 받아서 쓰면 안돼네요. 메뉴얼에 나와있듯이 본인이 만든 라이브러리에서 CI를 사용할려면 $this->CI =& get_instance(); $this->CI->load->library('session'); 처럼 해야하네요. 정상작동합니다. 프레임워크는 처음 사용하는거라 제 머리랑 프로그램이랑 따로 돌아가네요. 도구는 사용하는 사람의 역량에 달린거 같습니다. 답변주신 웅파님 감사합니다. 다들 새해복 받으세요. |
변종원(웅파)
/
2014/01/03 14:05:58 /
추천
0
extend에 대한 것은 잘 알고 계신데 라이브러리 사용법이 틀렸기에 매뉴얼 읽어보시라고 한겁니다.
읽어보시니 덤으로 라이브러리에서 ci 내부자원 사용법도 아셨죠. ^^ |
neo천
/
2014/01/06 09:36:22 /
추천
0
예 ㅎㅎ ci한국포럼덕분에 많이 배우고 갑니다. 항상 감사히 생각해요~
|
http://www.codeigniter-kr.org/user_guide_2.1.0/general/creating_libraries.html