일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 잠실수영장
- 덕소골프샵
- 개복숭아판매
- 자연산 개복숭아
- 제주도눈
- 개복숭아 판매
- 포천수영장
- 서원힐스
- 제주도설경
- 휘닉스파크
- LGG6
- 경기북부골프장
- 제주도눈썰매
- 파주골프장
- 괌
- 자연산개복숭아
- 야생개복숭아
- 포천투어
- 괌자유여행
- 조경철천문대
- 포천가볼만한곳
- 포천온천
- 한라산
- 야생개복숭아 판매
- 태안수영장펜션
- wp-900
- 제주도
- 개복숭아
- 충주골프장
- 돌복숭아
- Today
- Total
Live Brilliant
controller 하위폴더 접근 Router 설정 본문
codeigniter 에서 admin/board 를 라고 치면 페이지 접근이 되는데
admin/board/board 라고 치면 접근이 안된다.
ci에서 controller에 하위폴더를 한단계까지밖에 접근이 안된다고한다.
ex)
controllers/board.php 또는
controllers/admin/board.php 까지 만들 수 있는데
controllers/admin/board/board/list.php 이런식으로로 안되는 것이다.
그래서 아래와 같이 MY_Router 를 만들어 주면 된다.
application/core 폴더아래 추가
class MY_Router extends CI_Router
{
/**
* Constructor
*
* Runs the route mapping function.
*/
function __construct()
{
parent::__construct();
}
// --------------------------------------------------------------------
/**
* Validates the supplied segments. Attempts to determine the path to
* the controller.
*
* @access private
* @param array
* @return array
*/
function _validate_request($segments)
{
if (count($segments) == 0)
{
return $segments;
}
// Does the requested controller exist in the root folder?
if (file_exists(APPPATH.'controllers/'.$segments[0].EXT))
{
return $segments;
}
// Is the controller in a sub-folder?
if (is_dir(APPPATH.'controllers/'.$segments[0]))
{
// Set the directory and remove it from the segment array
$this->set_directory($segments[0]);
$segments = array_slice($segments, 1);
/*
* Updated for codefight cms
* Added new code to allow multi-level sub-folder
*/
$subfolder = false;
if (((count($segments) > 0) && is_dir(APPPATH . 'controllers/' . $this->directory . $segments[0])) && (!file_exists(APPPATH . 'controllers/' . $this->directory . $segments[0] . EXT))) $subfolder = true;
while ($subfolder)
{
if (!isset($segments[0])) break;
//Set the directory and remove it from the segment array
$this->set_directory($this->directory . $segments[0]);
$segments = array_slice($segments, 1);
// Does the requested controller exist in the root folder?
if ((count($segments) > 0) && file_exists(APPPATH . 'controllers/' . $this->directory . $segments[0] . EXT)) {
$subfolder = false;
}
}
/*---END--Sub-folder--*/
if (count($segments) > 0)
{
// Does the requested controller exist in the sub-folder?
if ( ! file_exists(APPPATH.'controllers/'.$this->fetch_directory().$segments[0].EXT))
{
show_404($this->fetch_directory().$segments[0]);
}
}
else
{
// Is the method being specified in the route?
if (strpos($this->default_controller, '/') !== FALSE)
{
$x = explode('/', $this->default_controller);
$this->set_class($x[0]);
$this->set_method($x[1]);
}
else
{
$this->set_class($this->default_controller);
$this->set_method('index');
}
// Does the default controller exist in the sub-folder?
if ( ! file_exists(APPPATH.'controllers/'.$this->fetch_directory().$this->default_controller.EXT))
{
$this->directory = '';
return array();
}
}
return $segments;
}
// If we've gotten this far it means that the URI does not correlate to a valid
// controller class. We will now see if there is an override
if ( ! empty($this->routes['404_override']))
{
$x = explode('/', $this->routes['404_override']);
$this->set_class($x[0]);
$this->set_method(isset($x[1]) ? $x[1] : 'index');
return $x;
}
// Nothing else to do at this point but show a 404
show_404($segments[0]);
}
// --------------------------------------------------------------------
/**
* Set the directory name
*
* @access public
* @param string
* @return void
*/
function set_directory($dir)
{
$this->directory = trim($dir, '/') . '/';
}
// --------------------------------------------------------------------
}
// END MY_Router Class
'개발은 핵찜이야 > codeigniter' 카테고리의 다른 글
코드이그나이터 흐름도 (0) | 2013.03.21 |
---|---|
[codeigniter] 웹에디터 html 사용시 손실 (0) | 2012.09.25 |
Codeigniter base_url vs site_url (0) | 2012.09.21 |
Codeigniter 쿼리스트링URL 과 세그먼트 URL 혼합 사용 하기 (0) | 2012.08.03 |
codeigniter 폴더구성 및 경로 (0) | 2012.07.30 |