2011-08-11 8 views
0

저는 CI와 같은 URL에서 인수를 가져와야하는 함수가 있습니다. 그러나 그것을하지는 않습니다. 내 URL은 domain.com/lasers/en/acme입니다.Codeigniter가 URL에서 인수를 취하지 않습니다.

내 클래스 레이저는 다음과 같습니다

class Lasers extends CI_Controller { 

    function __construct() 
    { 
     parent::__construct(); 

     $this->load->model('products_model'); 
     $this->load->model('common_model'); 
     $this->load->model('select_country_model'); 
     $this->load->model('markets_materials_model'); 
    } 


function index($lang = NULL, $laser = NULL) 
{ 
    $query = $this->products_model->get_product_content($laser, $lang); 
} 

모델은 생성자에서로드됩니다. 필요한 $ lang은 "en"이고 필요한 $ laser는 "acme"입니다. 그렇다면 왜 이것이 효과가 없습니까? 함수의 인수가 올바른 순서로되어있어 무엇이 잘못되었는지 알 수 없습니다.

+1

을 대체 할 _remap를 사용할 수 있습니다 이걸 어떻게 접근하고 있니? 당신의 URL은 무엇입니까? – ace

+1

또한'config/routes.php'에서 라우트 파일을 변경 했습니까? – ace

답변

1

당신이 domain.com/lasers/en/acme에 가면이 (존재하지 않는) en라는 방법 ..에 대한 lasers 컨트롤러에보고하려고하고

당신이 컨트롤러의 index 방법에 인수를 전달하지 못할 acme의 단일 매개 변수를 전달하십시오.

몇 가지 해결책이 있습니다. 가장 쉬운 방법은 다른 방법 (색인이 아님)을 사용하고 경로를 사용하여 URL을 작동시키는 것입니다.

다음이 대신 index의 같은 방법을 사용하여 config/routes.php

$route['^lasers/(:any)/(:any)'] = "lasers/get_products/$1/$2"; 

이 뭔가를 추가

function get_products($lang = NULL, $laser = NULL) { 
    $query = $this->products_model->get_product_content($laser, $lang); 
} 

을 ... 또는 당신은 기본 동작

+0

^는 무엇입니까? – sehummel

+0

안녕하세요, 그게 "시작"에 대한 정규 표현식, 어떤 이유로 그 컨트롤러와 일치하지 않게하기 위해 'biglasers'또는 'my_lasers'또는 뭔가라는 컨트롤러가있는 경우에 대비해. – icchanobot

0

"domain.com/lasers/index/en/acme"라고 쓰면 작동합니까?

domain.com/lasers/en/acme이라고 쓰면 $ lang이 "acme"이고 $ laser가 NULL 인 "En"기능을 찾습니다. 기본적으로

+0

404 오류가 발생합니다 – sehummel

+0

"domain.com/lasers/en/acme"를 통해 액세스 할 때 어떤 오류가 발생합니까? 그것은 인덱스 함수를 입력합니까? CI 라우팅을 사용하고 있습니까? – Woxxy

관련 문제