2017-01-14 4 views
0

www.example.com/alicia 같은 URL을 달성하기를 원한다. 앨리 시아는 클래스 이름이나 메소드 이름이 아니라 URL에 데이터를 전달하는 것과 같은 어떤 클래스와 나는 이것에 접근하고자한다. 추가 처리를 위해 사용하고 싶습니다. 어떻게 사용할 수 있습니까? 미리 감사드립니다.어떻게 codeigniter에서 URL을 라우팅 이런 종류의 달성

답변

0

이미 작동하는 기존 URL을 손상시키지 않으므로 까다로울 수 있습니다.

Apache를 사용하는 경우 일부 이름이 아닌 각 컨트롤러를 제외하도록주의를 기울이는 mod_rewrite 규칙을 설정할 수 있습니다.

또는 기본 컨트롤러에 remap method을 만들 수 있습니다.

class Welcome extends CI_Controller 
{ 
    public function _remap($method) 
    { 
     echo "request for $method being handled by " . __METHOD__; 
    } 
} 

는 요청 된 $ 방법을 검토 혹은 당신이 원하는 것을 결정하는 $ _SERVER [ "REQUEST_URI"]를보고하는 방법으로 로직을 작성할 수 있습니다. 이 작업은 일일이 조금 까다 롭지 만 시작할 수있는 좋은 방법 일 것입니다.

다른 URL과 구분하기 위해 어떤 방법을 생각해 볼 수 있다면 routing functionality of codeigniter을 사용하고 routes.php 파일에서 이러한 이름을 가리키는 패턴 일치 규칙을 처리하는 컨트롤러로 정의 할 수 있습니다 그들.

나는 default_controller가 이것의 한 요소라고 믿는다. 실제로 controller :: method 클래스에 해당하는 모든 컨트롤러/메소드 상황은 해당 controller :: 메소드에 의해 처리되어야합니다. 일치하지 않는 모든이, 저는 믿습니다, 당신의 default_controller에 할당됩니다

$route['default_controller'] = 'welcome'; 
1

사용할 수 CodeIgniter는 내장 된 라우팅, 파일 route.php이 당신의 config 폴더에 있습니다. 이

을 추가 할 수 있습니다 : 다음

$route['alicia'] = 'welcome/index/something'; 
$route['alicia/:any'] = 'welcome/index/someotherthing/$1'; 

를 컨트롤러에, 당신은 단지 같은 함수 생성 예를 welcome을 위해 :

public function index($page = null){ 
    if($page=='something'){ 
    // do what you need to do, for example load a view: 
    $this->load->view('allaboutalicia'); 
    } 
    elseif ($page=='someotherthing'){ 
     // here you can read in data from url (www.example.com/alicia/2017 
     $year=$this->uri->segment(2); // you need to load the helper url previously 
    }else{ 
    // do some other stuff 
    } 
} 

문서 routing에와에를 urlhelper

코멘트 후 편집 : 당신의 URI 세그먼트가 사용자 이름과 같은 변수를 나타내는 경우에 대비

, 다음 www.example.com/user/alice 같은 URI 체계를 사용하고 같은 경로를 만들어야합니다 컨트롤러에서 다음

$route['user/:any'] = 'welcome/index/user'; 

welcome

public function index($page=null){ 
    if($page=='user'){ 
    // do what you need to do with that user 
    $user=$this->uri->segment(2); // you need to load the helper url 
    } 
    else{ 
    // exception 
    } 
} 
+0

이 라우팅 방법에는 라우팅하려는 각 이름마다 고유 한 규칙이 필요합니다. 확실하지는 않지만 OP가 지정한 임의의 이름에 대해 작동 할 수있는 무언가를 찾고 있다는 느낌이 들었습니다. twitter.com/username과 같은 종류 –