2011-04-21 2 views
0

코드 점화 장치를 사용하고 있습니다.코드 점화 장치 동적 라우팅

example.com/idontexist

존재하지 않는 무엇인가 내가하고 싶은

,

페이지를 방문하면 그럼 내가 먼저 idontexist 데이터베이스에 있는지 데이터베이스를 확인합니다.

그 다음 내가

나는이 작업을 수행 할 수있는 방법

example.com/action/idontexist.

로 사용자 경로를 원하는 경우?

답변

2

하나의 솔루션은 응용 프로그램/코어/MY_Router.php에 자신과 함께 CI_Router 클래스를 확장하고 당신의 클래스() 메소드 _set_routing을 복사하는 것입니다. routes.php 파일을 포함하고 $ this-> routes 속성으로 변경 한 후 어딘가에 변경 사항이 있으면 사용자 정의 경로를 추가 할 수 있습니다.

 
include(APPPATH.'config/routes'.EXT); 
... 
$this->routes = (! isset($route) OR ! is_array($route)) ? array() : $route; 
unset($route); 

//Get your custom routes: 
$your_routes = $this->_get_custom_routes(); 
foreach($your_routes as $custom_route) 
{ 
    $this->routes[$custom_route['your_regex_match']] = $custom_route['controller'].'/'.$custom_route['action']; 
} 

당연히이 기능이 필요하지는 않지만 몇 가지 아이디어가 있기를 바랍니다. 맞춤 경로를 추가 할 수 있고 데이터베이스에서 가져와야하므로 속도를 높이기 위해 캐싱을 고려해보십시오.

+0

db에서 URL을로드하기 위해 get_instance()를 사용하여 CI를로드하려고하면 다음 오류가 발생합니다.'치명적인 오류 : 클래스 'CI_Controller'클래스가 system \ core \ CodeIgniter.php의 233 행에 없음 ' –

3

나는 매주 이같은 질문을 받는다.

application/config/routes.php는 다음과 같이 뭔가를 추가 열고 :

$route['^(:any)'] = "my_controller/get_article/$1"; 

주의 사항 그것이 라우팅합니다 action라는 컨트롤러에 이르기까지. 다른 컨트롤러가있는 경우에는 해당 컨트롤러를위한 경로를 추가해야합니다 (이 포트 앞에 배치하는 것이 바람직 함).

// 편집 : 당신은 고토 http://your-site.com/secrets-of-internet-marketing을이 수 사용하고 그것은 my_controller 컨트롤러에서 get_article 함수를 호출하고, 첫 번째 인수로 "secrets-of-internet-marketing"을 전달합니다. 어떤 수있는 다음과 같은 뭔가 과정 :

public function get_article($article_name) { 
    // something like this: 
    $article = $this->article_model->get_model_by_name($article_name); 
    $this->load->view('article', $article); 
} 
+0

내가 무엇을 요구하고있는 것은 아닙니다. 정적 파일로 전원을 공급 받고 싶지 않습니다. 아이디어는 내가 데이터베이스에 기사를 추가 할 수 있고 그 다음에 경로가된다. 그러나 나는 기사/기사/무엇이든 갖고 싶지 않다. 내 요점은? – Hailwood

+0

컨트롤러 내부에서 확인해야합니다. 이렇게하면 요청이 컨트롤러로 전달되고 입력에 대한 액세스가 제공됩니다. 그냥'$ 1' 인수를 취한 다음 데이터베이스에서 찾아보고 그 기사를 반환하십시오. – icchanobot

관련 문제