2010-03-29 2 views
1

코드 점화기로 작업하고 있는데 어떤 이유로 URL http://mysite.com/account/100에서 404 오류가 발생하지만 http://mysite.com/account 실제 작동합니다. 내 컨트롤러 account.php는 다음과 같습니다.코드 점화 장치 컨트롤러 - 함수 색인()과 함께 uri-> segment를 사용할 수 없습니까?

class account extends Controller { 


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

    function index() 
    { 
    echo 'hello'; 
     echo $this->uri->segment(2); 
    } 
    } 

어떤 생각이 잘못된가요?

+0

그렇게 시도 대신에 인수하는 방법으로 100에 전화하려고하는 것을 할 수있다 account/index/100으로 변경되었는지 확인하십시오. – Cory

+0

아, 맞습니다. 100을 함수로 취급하지 않도록 할 수 있습니까? 예를 들어 함수를 찾을 수 없다면 url 변수로 처리할까요? – John

+0

적어도 CodeIgniter 자체는 수정하지 않아도 될 것 같습니다. – Cory

답변

3

난 그냥 간단한 계정 클래스를 테스트했는데 계정의 메소드로 100을 호출하려고했지만 index.php 이후의 URL은 account/index/100이어야하며 정상적으로 작동합니다.

예를 들어 라우팅을 사용하여 해결할 수 있습니다.

$route['account/(:num)'] = "accounts/index/$1"; 

입니다. 자세한 내용은 URI Routing 사용자 가이드 에서 확인할 수 있습니다.

CodeIgniter를 사용하려면 컨트롤러 이름을 대문자로하고 파일 이름을 소문자로 변경해야하므로 컨트롤러를 변경하십시오.

class Account extends Controller { } 

+0

을 입력 할 것입니다. 미안합니다, 그건 내 질문에 타이핑 실수였습니다. . 사실 내 컨트롤러에 괄호가 없으며 account.php라는 이름이 붙어 있습니다. – John

0

account.php 당신의 이름이 경로를 추가하고 http://example.com/account를 요청할 때, 그것은 지수() 방법을 보이기 때문에 당신이 작동하지 않는

$route['account/(:any)'] = "account/index/$1"; 
0

좋다. 그러나 http://example.com/account/100을 요청하면 100() 방법을 찾고 있습니다. 존재하지 않습니다. 이와 같은 코드를 조정할 수 있습니다.

class account extends Controller { 
public function account() 
{ 
    parent::Controller(); 
} 

public function index() 
{ 
    echo 'hello'; 
} 

public function id(){ 
    echo $this->uri->segment(2); 
} 
public function alternative($id){ 
    echo $id; 
} 
} 

이 같은 URL을 호출 할 수 있습니다 : http://example.com/account/id/100

를하거나 같이 할 수있는이 http://example.com/account/alternative/100

관련 문제