Codeigniter не принимает аргументы из URL - PullRequest
0 голосов
/ 12 августа 2011

У меня есть функция, которая должна извлекать аргументы из URL, как это должен делать CI.Но это не так.Мой URL-адрес: domain.com/lasers/en/acme.

Мой класс Lasers:

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», а мне нужен $ acme «acme».Так почему это не работает?Аргументы в функции расположены в правильном порядке, поэтому я не вижу, что не так.

Ответы [ 2 ]

1 голос
/ 12 августа 2011

По умолчанию вы не можете передавать аргументы методу index контроллера

если вы переходите к domain.com/lasers/en/acme, он ищет в контроллере lasers метод с именем en .. (который не существует) и пытается передать ему один параметр acme

Существует несколько решений, вероятно, проще всего использовать другой метод (не индексирование), а затем использовать маршруты, чтобы 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 , чтобы переопределить поведение по умолчанию

0 голосов
/ 12 августа 2011

Работает ли это, если вы напишите "domain.com/lasers/index/en/acme"?

Если вы напишите domain.com/lasers/en/acme, он будет искать функцию «En», $ lang - «acme», а $ laser - NULL.

...