제목 | [팁] 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)로해서 데이터로 넘겨줍니다. 그럼 디자이너도 한페이지에서 작업을 할수 있으니 손대는 화일이 적어져서 편해지지요
단점은 구성자체가 단조로워지는 단점이 있겠습니다.