0

CI が行うはずのように、URL から引数を取得する必要がある関数があります。しかし、それはしていません。私の URL は domain.com/lasers/en/acme です。

私のクラスのレーザーは次のとおりです。

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" です。では、なぜこれが機能しないのでしょうか。関数内の引数は正しい順序になっているため、何が問題なのかわかりません。

4

2 に答える 2

1

デフォルトindexでは、コントローラーのメソッドに引数を渡すことはできません

あなたがそれに行くと、コントローラーで..(存在しない)と呼ばれるメソッドをdomain.com/lasers/en/acme探し、それに単一のパラメーターを渡そうとしていますlasersenacme

いくつかの解決策があります。おそらく最も簡単な方法は、別の方法 (インデックスではなく) を使用してから、ルートを使用して URL を機能させることです。

このようなものをあなたに追加してくださいconfig/routes.php

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

index次に、代わりに次のようなメソッドを使用します。

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

.. または、_remapを使用してデフォルトの動作をオーバーライドすることもできます

于 2011-08-12T07:34:59.587 に答える
0

「domain.com/lasers/index/en/acme」と書けば動きますか?

domain.com/lasers/en/acme と記述すると、"En" 関数が検索され、$lang は "acme" で、$laser は NULL のままです。

于 2011-08-12T00:13:02.403 に答える