1

Тема: Проблемы с роутами

Проблема следующая:
Создаю свой модуль, подключаю в конструкторе модуль ядра.
В функциях использую шаблонизатор (добавление, показ шаблона)
Все работает как часы.

Далее пытаюсь настроить роуты, все прописываю согласно правилам фреймворка ci (раньше с ним работал приличное количество времени). Добавляю "переадресацию" с одного урла на другой, посредством роута.

Пытаюсь вызвать эту функцию согласно моему прописанному роуту. Браузер выдает 500ую ошибку. Еррор лог ругается на функции шаблонизатора...

Thumbs up Thumbs down

2

Re: Проблемы с роутами

Здесь вообще есть кто живой? Если это баг системы, а не после моей переделки, то так и скажите, добавим в баг репорт, а если иначе, то хотя бы выскажите свои предположения, мб кто ковырял.

Thumbs up Thumbs down

3

Re: Проблемы с роутами

Можете показать как прописаны роуты?

Thumbs up Thumbs down

4

Re: Проблемы с роутами

Да самый элементарный:

$route['catalog/:any'] = "catalog/full/$1";

Thumbs up Thumbs down

5

Re: Проблемы с роутами

Аналогично, создал модуль, начинаю самые обычные ковыряния в routes.php - вписываю безобидную строчку

$route['goroda/(.*)'] = "/gorod/index/$1";

, но IC на них выдает

В логах:

ERROR - 2014-02-06 01:23:21 --> Severity: Notice  --> Undefined variable: mimes I:\OS\domains\IC452\system\core\Output.php 107
ERROR - 2014-02-06 01:23:21 --> Severity: Notice  --> Undefined variable: lang I:\OS\domains\IC452\system\helpers\language_helper.php 80
ERROR - 2014-02-06 01:23:21 --> Severity: Notice  --> Undefined index: name I:\OS\domains\IC452\application\modules\gorod\gorod.php 20
ERROR - 2014-02-06 01:23:21 --> Severity: Notice  --> Use of undefined constant eng - assumed 'eng' I:\OS\domains\IC452\application\modules\gorod\gorod.php 26
ERROR - 2014-02-06 01:23:21 --> Severity: Notice  --> Undefined property: CI::$template I:\OS\domains\IC452\application\modules\CMSFactory\assetManager.php 39

На странице:

Fatal error: Call to a member function add_array() on a non-object in I:\OS\domains\IC452\application\modules\CMSFactory\assetManager.php on line 39

Справки по CodeIgniter перечитал, делал по ним, не выходит. В Imagecms есть некий модуль Core, который походу обрабатывает все другие модули, через себя что ли.

Участники форума, разработчики, поясните, как я могу использовать свои модули в $routes, к примеру использовать по дефолту, или используя динамические сабдомены отправлять пользователя на конкретную страницу опять таки через routes.
Заранее спасибо.

Thumbs up Thumbs down

6

Re: Проблемы с роутами

Та же проблема с роутами sad

Thumbs up Thumbs down

7 Отредактировано AJIEKCAHDP (17-11-2016 16:37:41)

Re: Проблемы с роутами

Модуль Core организует связь путей, он определяет как должен обрабатываться УРЛ и какой сегмент отвечает за это. Там есть строчки для определения сегментов именно для модулей по одному шаблону, если вы хотите добавить свой модуль с другими урлами и обработкой, то в этом модуле надо дописывать код под свои правила. Роуты ЦИ не будут работать.

Определяеться это всё с методе:

private function is_module($n) {

}

Я дулал модуль каталога и подправлял метод этот для себя:

// Приватный метод запуск модуля
private function is_module($n) {
    // 1 cегмент урл адреса (название модуля)
    $segment = $this->uri->segment($n);
    // Найден ли модуль - по умолчанию
    $found = FALSE;
    // Перебираем список всех модулей из таблицы базы
    foreach ($this->modules as $k) {
        // Если индификатор модуля похож с сегментом названия модуля и модуль установлен-активный
        if ($k['identif'] === $segment AND $k['enabled'] == 1) {
            // Модуль найден
            $found = TRUE;
            // Название найденого модуля
            $mod_name = $k['identif'];
        }
    }

    // Если модуль найден
    if ($found == TRUE) {
            // Если модуль найденый - это каталог
            
          
            
            // Функция модуля будет следующей после названия модуля в урл
            $mod_function = $this->uri->segment($n + 1);
            // Если в сегменте не переданно название метода модуля, то метод будет отработан index
            if ($mod_function == FALSE) {
                // Метод модуля по умолчанию
                $mod_function = 'index';
            }

            $file = getModulePath($mod_name) . $mod_function . EXT;

            $this->core_data['module'] = $mod_name;

            if (file_exists($file)) {
                // Run module
                $func = $this->uri->segment($n + 2);
                if ($func == FALSE) {
                    $func = 'index';
                }

                $args = $this->grab_variables($n + 3);

                $this->load->module($mod_name . '/' . $mod_function);

                if (method_exists($mod_function, $func)) {
                    echo modules::run($mod_name . '/' . $mod_function . '/' . $func, $args);
                } else {
                    $this->error_404();
                }
            } else {
                // Поиск передаваемых аргументов
                $args = $this->grab_variables($n + 2);
                // Загрузка модуля
                $this->load->module($mod_name);
                if (method_exists($mod_name, $mod_function)) {
                    echo modules::run($mod_name . '/' . $mod_name . '/' . $mod_function, $args);
                } else {
                    // Если модуль каталог
                    if($mod_name == "catalog") {
                        // Выводим модуль каталога с аргументами
                        echo modules::run($mod_name, $args);
                    }
                    else {
                    // Если метод не найден модуля, вывод ошибки 404.
                    $this->error_404();
                    }
                }
            }
            // Модуль найден
            return TRUE;
        }
        // Модуль не найден
        return FALSE;
    }
Сделаю обновления вашего магазина до актуальной версии системы со вем переносом ваших товаров, просьба писать в приват.
https://novabench.com/image/742206.png

8

Re: Проблемы с роутами

Получаеться логика такая, 1 сегмент название модуля, далее аргументы - перемменные, в модуле уже создаю логику по переменным не по методам.

Сделаю обновления вашего магазина до актуальной версии системы со вем переносом ваших товаров, просьба писать в приват.
https://novabench.com/image/742206.png

Re: Проблемы с роутами

AJIEKCAHDP пишет:

Получаеться логика такая, 1 сегмент название модуля, далее аргументы - перемменные, в модуле уже создаю логику по переменным не по методам.

Ну да нужно так все делать и должно помочь.

Создание и продвижение сайтов . http://www.niagarastar.ru/ Низкие цены.
Оформление и ведение групп в соцсетях.

Thumbs up Thumbs down