Странное функционирование с сегментами в codeigniter - PullRequest
0 голосов
/ 07 ноября 2018

В настоящее время я работаю над системой с определенной архитектурой (не моей). В основной папке приложения есть общий ресурс и 2 другие папки (пользователь и администратор) с таким же типом ресурса, что дает нам такую ​​архитектуру:

  • приложение
    • админ
      • 1008 * конфигурация *
      • Контроллер
      • и т.д ...
    • пользователь
      • 1018 * конфигурация *
      • Контроллер
      • и т.д ...
    • и т.д ...

В корневой папке есть 2 файла: user.php и admin.php, каждый из которых имеет тот же код, что и в классическом index.php, за исключением строки

$application_folder = 'application/admin';

Пока код работает ... Но я нашел странную реакцию. В моей папке admin под контроллером я вызываю метод, который работает, кроме одной вещи ... представление загружено неправильно.

Во всех других методах у меня есть такой код, только с одним параметром:

public function results($param){
  $data = [];

  //some other code

  $this->load->view("election/header");
  $this->load->view("election/menu");
  $this->load->view("election/results", $data);
  $this->load->view("election/footer");
}

Это прекрасно работает, но когда у меня был второй параметр, чудесным образом, метод больше не отображал заголовок / меню / нижний колонтитул. Только пользовательский вид result ... Я также обнаружил, что если я случайным образом добавлю другой параметр в метод предварительного просмотра results для примера, произойдет такая же ошибка. Верхний / нижний колонтитул / меню обычно не отображаются больше. Я предполагаю, что есть проблема с маршрутизацией / htaccess или сегментом ... но я не могу указать на это ...

Вот корневой .htaccess файл

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^kanri(/(.*))?$ admin.php?/$2 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^user(/(.*))?$ user.php?/$2 [L]
</IfModule>

И admin/routing.php

$route['default_controller'] = 'login';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

Спасибо за ваше время!

1 Ответ

0 голосов
/ 07 ноября 2018

Благодаря Д. Димитрову решение было простым. Мне просто пришлось заменить относительный путь с помощью функции site_url(). Я не совсем понимаю, почему, но так как это работает, это все гад:>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...