开发者

Codeigniter not taking arguments from URL

开发者 https://www.devze.com 2023-03-27 07:05 出处:网络
I have a function that needs to pull arguments from the URL like CI is supposed to do.But it\'s not doing it.My URL is domain.com/lasers/en/acme.

I have a function that needs to pull arguments from the URL like CI is supposed to do. But it's not doing it. My URL is domain.com/lasers/en/acme.

My class Lasers is:

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('mar开发者_开发问答kets_materials_model');  
    }


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

The model is loaded in the constructor. The $lang I need is "en" and the $laser I need is "acme". So why isn't this working? The arguments in the function are in the correct order, so I can't see what's wrong.


By default you cant pass arguments to the index method of a controller

if you go to domain.com/lasers/en/acme it is looking in the lasers controller for a method called en.. (which doesn't exist) and trying to pass a single parameter of acme to it

Theres a few solutions, probly the easiest is to use a different method (not index) then use routes to make the URLs work.

add something like this to your config/routes.php

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

Then use a method like this instead of index:

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

.. OR you could use _remap to override the default behaviour


Does it work if you write "domain.com/lasers/index/en/acme"?

If you write domain.com/lasers/en/acme, it will look for the "En" function, $lang being "acme", and $laser remaining NULL.

0

精彩评论

暂无评论...
验证码 换一张
取 消