контроллер по умолчанию внутри подпапки codeigniter 3 не работает

В приложении codeigniter 3 у меня есть такая структура каталогов:

-Myproject
-application
-controllers
-home
Welcome.php   //This is my controller inside home directory

Как установить Welcome контроллер в качестве контроллера по умолчанию?
Я использую ниже код

$route['default_controller'] = 'home/Welcome';

Эта маршрутизация работает для предыдущих версий codeigniter.

5

Решение

По умолчанию вам не разрешено это делать. Чтобы обойти это, вам нужно взломать вашу систему Router.php:

CodeIgniter / система / ядро ​​/ router.php

Отредактируйте несколько строк кода так, чтобы он стал таким:

CodeIgniter / система / router.php

строка 1. if (!sscanf($this->default_controller, '%[^/]/%[^/]/%s', $directory, $class, $method) !== 2)

строка 2 if ( ! file_exists(APPPATH.'controllers'. DIRECTORY_SEPARATOR . $directory. DIRECTORY_SEPARATOR .ucfirst($class).'.php'))

строка 3 $this->set_directory($directory);

После этого вы можете вызвать контроллер по умолчанию в каталоге.

$ route [‘default_controller’] = ‘home / Welcome’;

9

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

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

<?php
class MY_Router extends CI_Router {
protected function _set_default_controller() {

if (empty($this->default_controller)) {

show_error('Unable to determine what should be displayed. A default route has not been specified in the routing file.');
}
if (sscanf($this->default_controller, '%[^/]/%s', $class, $method) !== 2) {
$method = 'index';
}
if( is_dir(APPPATH.'controllers/'.$class) ) {
$this->set_directory($class);
$class = $method;
if (sscanf($method, '%[^/]/%s', $class, $method) !== 2) {
$method = 'index';
}
}

if ( ! file_exists(APPPATH.'controllers/'.$this->directory.ucfirst($class).'.php')) {
return;
}
$this->set_class($class);
$this->set_method($method);
$this->uri->rsegments = array(
1 => $class,
2 => $method
);
log_message('debug', 'No URI present. Default controller set.');
}
}

Замечания: Не меняйте имя файла.

2

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