CI 묻고 답하기

제목 hook 에서 저장된 값 변경 여부
글쓴이 유마 작성시각 2012/12/21 11:03:45
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 14830   RSS
현재.. hook 에서 작업을 한 뒤, 그 값을 변수에 담아서 가지고 있다가..

$data = $this->load->view('auth/join_success', $view, TRUE);
$this->output->set_output($data);

요런 식으로 뿌려줍니다. $view 값이 hook 클래스에서 작업한 head, left, footer view를 담아놓은 변수입니다.

그리고 본문 클래스에서 와서 본문에서 뿌려줄 작업들을 해주고... 마지막에 저렇게 뿌려줍니다.


문제는 본문에서 작업한 값을 셋팅 해도 $view에서 이미 뷰 페이지가 만들어지고 그것을 담아놓은 상태라 변경이 되지 않네요?

예를 들면 본문에서 세션을 저장하고 뿌려줘야 하는데...

이미 hook에서는 본문 작업 전에 세션을 읽어서 담아놓고 있기 때문에 세션이 없는걸로 나옵니다.

훔, 이 부분은 어떻게 해야 할까요?
 다음글 CI SESSION 질문입니다. (1)
 이전글 라이브러리 생성자에 초기값 넘기기 (1)

댓글

헛발이 / 2012/12/21 11:44:25 / 추천 0
아시겠지만요...Hook의 기능들은 여러가지가 있으니깐요...

pre_system
pre_controller
post_controller_constructor
post_controller
display_override
cache_override
post_system

가장마지막 단계에서 작업을 하시면서 그 앞부분이 되길 생각하면 안되실듯 싶어요...
제 소견이지만 흐름의 생각을 좀 다시 생각해봐야 하는거 아닌가 하네요..
유마 / 2012/12/21 13:25:31 / 추천 0
헛발이 //

hook 에서 작업하면 아무리 해도 안될 것 같더라고요.

그래서 그냥 그 함수에서는 view를 뿌리지 않고 컨트롤러의 역할만 하도록 하고 다른 페이지로 한번 넘기도록 했어요.

그러면 이미 세션에 들어 있으니깐 후크에 갔다 와도 바뀐 세션으로 체크 되어서 작업할 테니까..
헛발이 / 2012/12/21 13:56:07 / 추천 0
저도 Hook를 이용해서 레이아웃을 잡고 있는데요...

그 방식이 display_override를 사용하기 때문에 가장 마지막 화면에 보여주기 직전이기 때문에 다 완료 한 상태기 때문에 다시 뭔가 변환 하는게 어렵긴 하죠...

격하게 코딩을 해보면 이렇게는 할수 있겠죠...

view에서 {my_session_value} 이런 그냥 텍스트를 만들어 놓고
Hook에서 마지막 뿌리기 전에

$output = str_replace("{my_session_value}", $this->session->userdata('test'), $output);

이런식으로 치환한느 방법도 있겠죠... ^^