2013-03-23 4 views
3

Я переношу рабочий сайт L3 для использования L4. Когда контроллер вызывает класс библиотеки (app/libraries/adminthing.php), я получаю ошибку Error: Class 'adminthing' not found in /var/www/l4/app/controllers/AdminController.php line 15Класс библиотеки не найден в Laravel 4

старт/global.php

ClassLoader::addDirectories(array(

    app_path().'/controllers', 
    app_path().'/models', 
    app_path().'/database/seeds', 
    app_path().'/libraries', 

)); 

Я также сделал composer dumpautoload после добавления библиотеки классов. Что еще я пропустил?

ответ

10

Вы можете автозагрузить папки из composer.json. Если у вас есть пользовательские классы в папке под/app, вы можете добавить папку в composer.json, после чего классы будут загружены автоматически.

"autoload": { 
    "classmap": [ 
    "app/commands", 
    "app/controllers", 
    "app/models", 
    "app/database/migrations", 
    "app/database/seeds", 
    "app/tests/TestCase.php", 
    "app/customlib" <-- add this 
    ] 
}, 

Тогда композитор выгружает автозагрузку, и вы можете использовать классы!

+0

Возможно ли иметь такое же поведение, как в L3? Используя Autoloader класса Laravel для отслеживания классов в папке/app/libraries вместо того, чтобы полагаться на композитор – Nyxynyx

+0

, я думаю, вы могли бы, но поскольку laravel 4 в значительной степени основан на композиторе, я бы рекомендовал загружать все с помощью композитора. – stormpat

+0

Yup Ваше предложение работает! Странно то, что 'ClassLoader :: addDirectories()' не работает – Nyxynyx

Смежные вопросы