개인적으로 컨트롤러 라이브러리를 확장합니다 (Creating Libraries at codeigniter.com 하단의 안내에 따라 MY_Controller 만들기).
정상적으로 모델 등을 사용합니다. 그런 다음 관련 "글로벌"데이터를 얻을 수 있도록 MY_Controller 클래스에 개인 기능을 만들고 부를 것이다 $everywhere_data
로 그 시점에서 호출 된 모든 뷰에 데이터를 사용할 수 있도록 할
$this->load->vars('everywhere_data', $data_from_relevant_models);
. 그런 다음 해당 함수에 대한 참조를 MY_Controller의 생성자에 추가합니다. 실제로 사용자가 실제로 로그인했는지에 대한 조건부 검사를 사용합니다.
모든 데이터를 수집하고 가져 오는 것이 복잡한 경우 라이브러리를 작성하여 처리 할 수 있습니다 당신을 위해,하지만 '컨트롤러'부분은 여전히 MY_Controller에 의해 수행됩니다 : 즉, 데이터를 가져온 다음 load-> vars()를 사용하여 뷰에 게시합니다. _logged_in_userid()
같은 것들을 당신을위한 세션 (예를 들어, return $this->session->userdata('logged_in_userid');
)에 액세스 할 것이라고
가
<?php
class MY_Controller extends Controller
{
private $logged_in_user;
function MY_Controller()
{
parent::Controller();
if($this->_logged_in_userid() > 0)
{
$this->logged_in_user = $this->_get_user($this->logged_in_userid());
$this->load->vars('logged_in_username', $this->logged_in_user->username);
} else {
$this->logged_in_user = false;
}
}
...
}
주 및 _get_user()
는 관련 모델에 액세스 할 : 신속하고 검증되지 않은 예를 들어
는 MY_Controller은 다음과 같은 것을 시작합니다.
마지막으로, 당신은 그들이 자신의 특정 기능을 제공에 초점을 맞출 수 있도록 등이 일반 컨트롤러 정리 된 잎 당신이 당신의 헤더에 부를 것이다 (내 첫 번째 예 또는 everywhere_data
) $logged_in_username
에 액세스 볼 수있을 것입니다, 당신을 중지 코드를 여러 번 다시 작성하고 MVC 이상을 유지합니다.
매우 유용하고 매우 흥미로운 방법입니다. 도와 주셔서 감사합니다. :) – rkj
문제 없습니다! 이것이이 사이트의 모든 것입니다. 의심 할 여지없이 내가 언젠가는 질문하는 것에 답할 것입니다 :) – Kurucu