CodeIgniter 3 не вызывает контроллер по умолчанию?

Меня попросили разобраться с проблемой, когда default_controller в проекте CodeIgniter 3, кажется, не вызывается. Вместо этого мы видим ошибку 404.

в application/controllers папка есть Welcome.php файл со следующим содержанием:

class Welcome extends CI_Controller {

public function __construct()
{
parent::__construct();
// Your own constructor code
}

public function index()
{
print('hello');
$this->load->view('welcome_message');
}
}

application/config/routes.php файл имеет:

$route['default_controller'] = "welcome";

Я вижу только 404 и ни одного ожидаемого текста.

Добавление print заявление в routes.php показывает, что он загружается. Кроме того, при явной привязке к маршруту он вызывается, но не тогда, когда он установлен в качестве контроллера по умолчанию.

$route['blah'] = "welcome"

Кто-нибудь может подсказать, что может происходить?

Кстати, мы используем PHP7 на машине с Ubuntu 16.04.

0

Решение

Оказывается, проект был обновлением по сравнению с проектом CodeIgniter 2, и были некоторые этапы миграции, которые еще не были полностью выполнены. Оказалось, что в папке с библиотеками был MY_Router.php, который, казалось, отбрасывал вещи — по крайней мере, перемещение его в приложения / ядро ​​решило проблему.

В файле MY_Router.php потребовалась дополнительная модификация с учетом заглавных букв имен файлов, запрошенных как часть миграции CI3:

function _validate_request($segments)
{
// Does the requested controller exist in the root folder?
if (file_exists(APPPATH.'controllers/'.ucfirst($segments[0]).'.php'))
{
return $segments;
}
...
}

Кстати, я был уверен, что это не проблема перезаписи HTTP-сервера, поскольку на странице ошибки CodeIgniter 404 отображался ожидаемый путь вызова. Я добавил print(_SERVER['REQUEST_URI']) чтобы увидеть, что происходит.

Редактировать: теперь я вижу, что описанный выше подход ucfirst не идеален в других установках, но, учитывая, что в папке контроллеров этого проекта нет подпапок, это быстрое решение для этого проекта.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector