2011-01-10 7 views
5

첫 번째 CI 프로젝트를 시작하고 어떻게 URL 매개 변수를 처리하는지 궁금하십니까? 나는 'city'라는 컨트롤러를 가지고 있고 localhost/codeigniter가 localhost/codeigniter/city에 다시 쓰기를 사용하도록 mod_rewrite를 수정했다. 내가하고 싶은 것은 도시 이름을 URL 끝에 추가하고 get 세그먼트를 사용하여 테이블을 쿼리하는 것입니다.CodeIgniter : URL에 매개 변수 추가

제 예제는 localhost/codeigniter/edinburgh입니다. 나는 마지막 세그먼트를 잡고 SQL 쿼리를 만들 것이다. 그러나 나는 내가 에딘버러를 URL에 넣었을 때 나는 '에딘버러'라는 컨트롤러를 찾고 있다고 생각합니다.

라우팅을 추가하거나 비슷한 것을 추가해야합니까?

답변

9

실제로이 작업을 수행하려면 routing을 사용할 수 있습니다.

$ route [ ': any'] = "controller/method";

이렇게하면 기본 URL 다음의 모든 URL이 해당 컨트롤러 내의 지정된 컨트롤러 및 방법으로 리디렉션됩니다. URL 세그먼트를 얻으려면 URI helper을 사용할 수 있습니다.

$ this-> load-> helper ('url'); // 도우미를 먼저로드하십시오.

$ city- $ this-> uri-> segment (1);

http://localhost/codeigniter/edinburgh에 액세스하는 경우 위의 예에서 $ city 변수는 edinburgh입니다.

희망 하시겠습니까?

추신. 기본 컨트롤러를 지정하기 위해 mod_rewrite가 필요하지 않습니다. config.php에서 경로 아래에 설정할 수 있습니다. city를 기본 컨트롤러로 지정하면 mod_rewrite를 제거 할 수 있습니다.

+0

덕분에, 지금 내 post_insert 방법은 그냥 동일하게 취급된다. 무시할 메소드를 지정해야합니까? – iamjonesy

+1

더 자세한 라우팅이 필요한 경우 $ route [ ': any']보다 위에 추가하십시오. – dvk

3

예 당신이 사용할 수있는 route :

$route[':any/'] = "myclass/by_city_method"; 

하지만 도시 (예를 들어)라는 모듈을 사용하지 않는 이유 고전 URI 구성표를 얻을?

class city extends Controller { 
    public void index($city=false) { 
     if ($city) { } else { } 
    } 
} 

편집 : 글로벌 구성 파일에서 도시를 기본 컨트롤러로 선택할 수도 있습니다.

0
$path = "/codeignter/city/viewcity/Edinburg"; 

viewcity이 값 '에딘버러'이 전달됩니다를 가지 매개 변수와 함께 실행되는 방법, 도시 컨트롤러를 호출 할 때 발생합니다!

경로 : 여기

은 ...

class city extends Controller { 
    public viewcity($city='') { 
     echo ($city === '') ? "The city you want to view is {$city}!" : "not defined!"; 
    } 
} 

아멘 :

2

또 다른 방법 컨트롤러에 대한 코드입니다.PHP :

$route['city/(:any)'] = "city/city_lookup/$1"; 

city.php

<?php 
class City extends Controller { 

    function City() 
    { 
     parent::Controller(); 
    } 

    function city_lookup($id) 
    { 
     echo "$id"; 
    } 
} 
관련 문제