2015-11-26 2 views
0

MVC загружен на cloud9, но когда класс автонагрузки, расположенный в lib/init.php, не работает. .htaccess в папке проекта или файлах папки webroot настроены неправильно.Функция автозагрузки моего класса не работает в моем mvc

Когда я посещаю мою ссылку проекта https://my-mvc-hunteelar.c9users.io/ дает это исключение:

Failed to load class: Config' in /home/ubuntu/workspace/lib/init.php on line 21

У меня есть 2 .htaccess файлы. Первый код .htaccess в главной папке проекта является:

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteRule ^$ webroot/ [L] 
    RewriteRule (.*) webroot/$1 [L] 
</IfModule> 

второй .htaccess файл, расположенный в папке WebRoot, которая должна быть общая папка моего MVC:

<IfModule mod_rewrite.c> 

    RewriteEngine on 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php [PT,L] 

</IfModule> 

init.php код который содержит функцию __autoload.

require_once (ROOT.DS.'config'.DS.'config.php'); 
function __autoload($class_name){ 

    $lib_path = ROOT.DS.'lib'.DS.strtolower($class_name).'class.php'; 
    $controllers_path = ROOT.DS.'controllers'.DS.str_replace('controller', '', strtolower($class_name)).'class.php'; 
    $models_path = ROOT.DS.'models'.DS.strtolower($class_name).'class.php'; 

    if(file_exists($lib_path)){ 
     require ($lib_path); 
    } 
    elseif (file_exists($controllers_path)){ 
     require_once ($controllers_path); 
    } 
    elseif (file_exists($models_path)){ 
     require_once ($models_path); 
    } 
    else{ 
      throw new Exception('Failed to load class : '.$class_name); 
     } 
} 

Вот мой код загружен на cloud9 https://ide.c9.io/hunteelar/my-mvc

+0

Просьба показать ваш код –

+0

обновить код htaccess –

+0

@Bhavik Patel Я разместил код – hunteelar

ответ

0

Я думаю, вы уже решили эту проблему. Но проблема заключается в инициализации вашего кода.

$controllers_path = ROOT.DS.'controllers'.DS.str_replace('controller', '', strtolower($class_name)).'class.php'; 

на самом деле должно быть:

$controllers_path = ROOT.DS.'controllers'.DS.str_replace('controller', '', strtolower($class_name)).'.controller.php'; 

Также

$models_path = ROOT.DS.'models'.DS.strtolower($class_name).'class.php'; 

Должно быть

$model_path = ROOT.DS.'models'.DS.strtolower($class_name).'.php'; 

В случае это может помочь кому-то еще.