제목 | HOOK으로 레이아웃 한방에 훅~ | ||
---|---|---|---|
글쓴이 | 케이든 | 작성시각 | 2009/11/03 15:57:13 |
|
|||
1. HOOK 사용 설정 config/config.php $config['enable_hooks'] = TRUE;config/hooks.php $hook['display_override'][] = array( 'class' => 'Yield', 'function' => 'doYield', 'filename' => 'Yield.php', 'filepath' => 'hooks' ); 2. HOOK 파일 추가 hooks/Yield.php <?php if (!defined('BASEPATH')) exit('No direct script access allowed'); class Yield { function doYield() { global $OUT; $CI =& get_instance(); $output = $CI->output->get_output(); $CI->yield = isset($CI->yield) ? $CI->yield : TRUE; $CI->layout = isset($CI->layout) ? $CI->layout : 'default'; if ($CI->yield === TRUE) { if (!preg_match('/(.+).php$/', $CI->layout)) { $CI->layout .= '.php'; } $requested = APPPATH . 'views/layouts/' . $CI->layout; $layout = $CI->load->file($requested, true); $view = str_replace("{yield}", $output, $layout); } else { $view = $output; } $OUT->_display($view); } } ?>디펄트 레아이웃 파일은 default.php, 레이아웃 폴더위치는 view/layouts 또는 입맛대로 변경 3. default.php 레이아웃 파일 추가 views/layouts/default.php <html> <header> </header> <body> <div> </div> {yield} <div> </div> </body> <html>4. 컨트롤러에서 레이아웃 사용법 class Test extends Controller { //레이아웃 파일 설정 var $layout = 'my_layout_file'; function Test() { parent::Controller(); } function index() { //로드되는 view 파일들은 레이아웃 파일안에 {yield} 와 항상 replace 됨. $this->load->view('main'); $this->load->view('sidebar'); } function ajax_call() { //레이아웃 파일을 사용하지 않을시 $this->yield = FALSE; echo json_encode($array); } function need_another_layout() { $this->layout = 'another_layout'; } } 5. 참고 layout 파일안에 데이타를 넘겨줘야 할 경우, 다른 view파일을 로드할때 데이타를 같이 넘겨주거나, $this->load->vars($data);위처럼 글로벌로 넘겨주면 됩니다. 출처 : http://codeigniter.com/forums/viewthread/57902/ |
|||
다음글 | [예제] 다중디비 사용하기 (5) | ||
이전글 | [lib추가] 웹에디터 SPAW | ||
ci세상
/
2009/11/06 10:44:04 /
추천
0
|
Jeremy
/
2011/04/15 10:55:33 /
추천
0
케이든님 이거 보고 따라했는데 전 다음과 같은 에러가 떠요.
Fatal error: Call to a member function get_output() on a non-object 아마 밑에 코드에 문제가 있는거 같은데 뭐가 문제 일까요? $output = $CI->output->get_output(); |
희망2
/
2011/04/17 18:00:05 /
추천
0
|
컨트롤러에서 view를 생성하는것보다 ~~ 레이아웃 자체에서 이미 스킨 형태로 다 만들어져 있었다면 더 좋았을것이라는 생각을 해보게 됩니다.^^
현재 방식의 훅 레이아웃이 결국은 css 코딩을 하시는 분들께는 유용하실 수 있다는 의견입니다.^^