2011-08-11 7 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

関連する問題