| 제목 | [팁] CI 중복배제 | ||
|---|---|---|---|
| 글쓴이 | ci세상 | 작성시각 | 2009/08/12 19:02:33 |
|
|
|||
|
CI 를 쓰면서 가장 신경쓰는 부분이 중복성을 배제시키는 부분이었습니다. 컨트롤러 파트를 다음과 같이 함 만들어 보았습니다. 더나은 방법이나 잘못된 부분에 대하여 많은 지적 부탁드리겠습니다.^^
<?php
class Board extends Controller {
/**
* 초기화
*
*
* @access public
* @param mixed
* @param string
* @return void
*/
function Board()
{
parent::Controller();
// 로드 : 세션
$this->load->library('session');
// 로드 : 공용
$this->load->library('common');
// CI 설치폴더
$this->ci_dir = CI_ROOT;
// 메뉴폴더
$this->base_dir = $this->uri->segment(2);
// 기본링크
$this->link_url = '/'.$this->ci_dir.'/'.$this->base_dir.'/';
// 로드 : 모델
$this->load->model(''.$this->base_dir.'_model');
// 정의 : 페이지네이션 이동값
$this->limit = PER_PAGE;
}
/**
* 메인 재매핑
*
*
* @access public
* @param mixed
* @param string
* @return void
*/
function _remap($method)
{
// 네비명
$config['base_navy']= 'Home > 게시판';
// 메뉴정의
$config['menu_arr'] = array(
'메뉴1' => array(
array('서브1' => '_self^'.$this->link_url.'list1'),
array('서브2' => '_self^'.$this->link_url.'list2'),
array('서브3' => '_self^'.$this->link_url.'list3')
),
'메뉴2' => array(
array('서브1' => '_self^list4'),
array('서브2' => '_self^list5'),
array('서브3' => '_self^list6')
)
);
// 상단정의
$this->load->view(''.TOP_DIR.'',$config);
// 메쏘드 유무를 체크해서 가변함수 처리하기
if ( method_exists($this,$method.'_method'))
{
$this->{"{$method}_method"}();
}
else
{
$data['url']= 'sample';
$this->load->view(''.$this->link_url.''.$method,$data);
}
// 하단정의
$this->load->view(''.FOOT_DIR.'');
}
/**
* 목록
*
*
* @access public
* @param mixed
* @param string
* @return void
*/
function list_method()
{
// 설정
$table_name = "board"; // Table name
$search = ""; // Search Segment (ex : /id/test/name/test)
$model_name = "select_entry"; // Model name
$file_name = "list"; // View name (*.php)
// 결과
$data= $this->common->set_listing($table_name,$search,$model_name);
$this->load->view(''.$this->link_url.''.$file_name.'',$data);
}
/**
* 쓰기
*
*
* @access public
* @param mixed
* @param string
* @return void
*/
function write_method()
{
$this->_set_validation('write');
// 본문정의
if ($this->form_validation->run() == FALSE)
{
$this->load->view(''.$this->link_url.'write');
}
else
{
$data = array(
// phpMyAdmin CI Auto Query 이용 (쿼리실수 방지)
// 포럼주소 : http://codeigniter-kr.org/tip/view/92/page/1
);
//INSERT 처리
$this->db->insert('board', $data);
// 완료처리
redirect(''.$this->link_url.'board');
}
}
/**
* 폼체크 (공용)
*
*
* @access public
* @param mixed
* @param string
* @return void
*/
function _set_validation($type)
{
//에러문구 관련 정의
$this->common->set_validateion();
// 폼체크
if($type == "write")
{
$config = array(
array('field'=>'name', 'label'=>'이름을', 'rules'=>'trim|required|is_natural'),
array('field'=>'email', 'label'=>'이메일을', 'rules'=>'trim|valid_email|is_natural'),
array('field'=>'title', 'label'=>'제목을', 'rules'=>'trim|required|is_natural')
);
}
$this->form_validation->set_rules($config);
}
}
?>
|
|||
| 다음글 | flash 업로드시 세션문제 해결 (4) | ||
| 이전글 | [팁] CI 페이지네이션 일련번호 | ||
|
맥스
/
2009/08/15 01:50:01 /
추천
0
|
저같은 경우에는 각각의 레이아웃을 만듭니다. 두가지 내지는 세가지 정도가 되겠지요 좌측 메뉴가 있는 경우 없는 경우 아니면 빈페이지인 경우
그럼 그상태에서 각각의 뷰페이지에서 $this->load->view('xxx',$xxx,TRUE)로해서 데이터로 넘겨줍니다. 그럼 디자이너도 한페이지에서 작업을 할수 있으니 손대는 화일이 적어져서 편해지지요
단점은 구성자체가 단조로워지는 단점이 있겠습니다.