CI 묻고 답하기

제목 view에서 html 포함관계가 안되네요.
글쓴이 나잇황제 작성시각 2009/10/06 14:36:04
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 29118   RSS

matchbox를 이용해서 구조를 다시 만들고 있는데요.

html 포함관계가 안되네요. 
 

header  
left menu  

 
content

 
footer                                                            









이런식의 레이아웃 구조입니다. 그런데  아래의 URL 과 같이 나오네요.
http://210.125.145.52/adminpath/board

URL에 보시면 header, left menu, content, footer 의 위치를 표시해 두었습니다 .
원래 그자리에 들어가야 하는데 이상하게 표시가 되네요.
현재 CI 버전은 1.7.2 구요 matchbox 버전은 0.9.4 입니다.

 다음글 matchbox를 이용한 site_url() 사용이 잘... (7)
 이전글 체크박스 다중값 어케 넘겨 받나요? (7)

댓글

변종원(웅파) / 2009/10/06 15:44:55 / 추천 0
Unable to load the requested language file: language/board_lang.php

에러가 납니다.

변종원(웅파) / 2009/10/06 16:59:00 / 추천 0
<table>
<tr>
	<td colspan="2">header</td>
</tr>
<tr>
	<td>left</td>
	<td>content</td>
</tr>
<tr>
	<td colspan="2">footer</td>
</tr>
</table>
위와 같은 구조라면

header.php
<table>
<tr>
	<td colspan="2">header</td>
</tr>
<tr>
	<td>left</td>
	<td>
footer.php
</td>
</tr>
<tr>
	<td colspan="2">footer</td>
</tr>
</table>
로 나누고

controller에서
function index()
{
//상단 및 좌측
    $this->load->view('header');

//content에 해당하는 view 호출
    $this->load->view('content');

//하단
    $this->load->view('footer');
}
이렇게 사용합니다.

그리고 _remap을 사용하면 다음과 같습니다.

function _remap($method)
{
	//상단
	if ( $method != 'search_info_del' ) {
		$this->load->view('admin/admin_header_v', $this->data);
	}

	//해당 메소드 호출
	$this->{$method}();

	//하단
	if ( $method != 'search_info_del' ) {
		$this->load->view('admin/admin_footer_v');
	}
}
메소드중에서 상하단 include가 필요없는 부분을 if의 조건에 넣어놓으면 상하단이 include 되지 않고
나머지 메소드는 모두 자동으로 상하단이 inlcude 됩니다.
_remap은 생성자 하단에 위치하면 됩니다. (매뉴얼 참고)

나잇황제 / 2009/10/06 19:44:28 / 추천 0

웅파님 답변 감사합니다.

지금 현재 제가 사용하고 있는 방법이 아래와 같습니다. controllers 에서 이렇게 처리하고 있습니다.
 

$layout['header'] = $this->load->module_view('adminpath', 'common/header', true);
$layout['left_menu'] = $this->load->module_view('adminpath', 'left_menu/board', true);		
$layout['content'] = $this->load->module_view('adminpath', 'board/category', $cat_data, true);
$layout['footer'] = $this->load->module_view('adminpath', 'common/footer', true);
$this->load->module_view('adminpath', 'layout/layout_admin', $layout);
그리고 layout_admin.php 파일이 위와 같은 구조로 되어 있구요.
그런데...  matchbox 하기 전까지는 html 포함관계가 잘 되었거든요.
_remap은 처음 들어보는 함수네요. 한번 찾아보아야겠네요.
감사합니다.
ci세상 / 2009/10/06 23:07:01 / 추천 0

application/libraries/Loader.php 91줄에 보시면 해답이 나와있는데요
 

    function module_view($module, $view, $vars = array(), $return = false)
    {
        return $this->view($view, $vars, $return, $module);
    }
위소스를 아래와 같이 수정하시면 됩니다.

$layout['header'] = $this->load->module_view('adminpath', 'common/header', '', true);
$layout['left_menu'] = $this->load->module_view('adminpath', 'left_menu/board', '', true);		
$layout['content'] = $this->load->module_view('adminpath', 'board/category', $cat_data, '', true);
$layout['footer'] = $this->load->module_view('adminpath', 'common/footer', '', true);
$this->load->module_view('adminpath', 'layout/layout_admin', $layout);
나잇황제 / 2009/10/06 23:29:59 / 추천 0
ci세상님 이제야 해결 되었네요.ㅎㅎ
도움주셔서 감사합니다.
라이브러리를 확인했어야 하는데.. 제 생각이 짧았네요. *^^*

웅파님도 감사합니당*^^*
웅파님하고 ci세상님 덕분에 많이 배우네요. *^^* 혹시 php fest 오시나요들?
저두 토요일에 가려고 신청했는데... 혹시 가시면 한번 뵈요.ㅎㅎ
수고하세요*^^*