Класс Laravel 4.2–5 «App\Http\Controllers\Controller» не найден

Я обновил свой проект с Laravel 4.2 до 5.0, но получаю эту ошибку, когда завершить процесс:

Класс «App\Http\Controllers\Controller» не найден в .../app/Http/Controllers/Auth/AuthController.php:8

Но упомянутый контроллер есть в app/Http/Controllers/Controller.php.

Также это определено в composer.json, autoload, classmap:

"autoload": {
        "classmap": [
            "database",
            "app/Http/Controllers",
            "app/Libraries"
        ],
        "psr-4": {
            "App\\": "app/"
        }
    },

По-видимому, это проблема пространства имен, но я не знаю, как ее решить.


person Paulo Coghi    schedule 23.03.2015    source источник


Ответы (3)


В 99% случаев основной причиной того, что классы не найдены при переносе проекта Laravel 4 на Laravel 5, является отсутствие пространств имен.

Важно добавить пространства имен ко всем вашим классам, контроллерам, старым фильтрам в качестве промежуточного ПО и т. д.

person Paulo Coghi    schedule 12.05.2015

Просто добавьте файл/каталог в свой композитор.

"autoload": { "classmap": ["приложение/Http/Контроллеры/Controller.php"],

Есть и много других способов. Или используйте psr-0,psr-4 для автоматической загрузки каталога/файла. Или вы загружаете этот файл в global.php.

person Harry Geo    schedule 23.03.2015
comment
Я уже добавил app/Http/Controllers в карту классов в автозагрузке. Но даже когда я добавляю app/Http/Controllers/Controller.php, это не работает - person Paulo Coghi; 23.03.2015
comment
Какие есть другие способы? - person Paulo Coghi; 23.03.2015
comment
Вы сначала выполнили автозагрузку дампа композитора? Когда я говорю о других способах, это psr-0,psr-4 и global.php... Вам просто нужно автоматически загрузить файл, и класс будет существовать в основном контейнере Laravel. Попробуйте psr-4 и отчитайтесь. `psr-4: {MyNameSpace\\: app\MyNameSpace} ` - person Harry Geo; 23.03.2015
comment
Да, сделал дамп-автозагрузку composer, а ошибка осталась - person Paulo Coghi; 23.03.2015
comment
Вы установили имя своего проекта, если у вас есть, то [ваш проект]/Http/Controllers/Controller; - person UX Labs; 01.05.2015

У меня такая же проблема. Следуя руководству по обновлению (http://laravel.com/docs/5.0/upgrade#upgrade-5.0) миграция прошла нормально, но затем, когда я начал играть с Auth, я получил ту же ошибку.

Причина заключалась в том, что я следовал руководству по обновлению. Когда он говорит: «Поскольку мы не собираемся переходить на полное пространство имен в этом руководстве», на самом деле вы должны использовать пространства имен в своих контроллерах вверху.

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

А затем раскрутите то, что вы сделали в разделе «Контроллеры» руководства по обновлению. Затем после запуска composer dump-autoload он будет работать.

person kintso    schedule 03.06.2015