Я создаю расширенную установку CakePHP 2.3 (несколько приложений-веб-сайтов, которые используют одну и ту же папку lib, где расположены все основные файлы торта). Это работает без проблем, я просто редактирую файл core.php в папке Config для каждого приложения, чтобы оно знало, где найти файлы торта. Файловая система выглядит примерно так:
[root]
[cake-core-files]
[websites]
[website-1]
[app]
[plugins]
[vendors]
[website-2]
...
[website-N]
Эти разные приложения на самом деле чем-то отличаются (это разные веб-сайты), но в то же время есть много общего для всех них (например, некоторые модели, контроллеры, функции...). Что я хотел бы сделать, если это возможно, так это чтобы эти приложения также совместно использовали кучу контроллеров, моделей и т. д., чтобы я мог разместить их в одном месте, вместо того, чтобы копировать их сейчас для каждого приложения.
Я видел концепцию поставщиков и плагинов в CakePHP (на самом деле я использую плагины на этих веб-сайтах, но из папки /app/plugins), но я не уверен, сработает ли это в моем случае, или как бы я это настроил. Я предполагаю, что идея заключалась бы в том, чтобы иметь другую папку (например, [shared_objects]) на том же уровне, что и [cake-core-files] и [веб-сайты], но я не знаю, как мне настроить торт для этого. или как вызывать эти объекты из каждого приложения.
Есть идеи?
ИЗМЕНИТЬ
Основываясь на комментариях/ответах ниже, я пытаюсь сделать это с помощью функции App:build() в файле bootstrap.php, но не могу заставить ее работать. Вот что я сделал:
Добавлена новая папка, в которую я хочу поместить материалы для совместного использования всеми приложениями:
[root] [cake-core-files] [shared-stuff] --> NEW FOLDER [Model] [Config] [websites] [website-1] и т. д...
Поместил модель User.php в новую папку [shared-stuff/Model].
Добавил эту строку в бутстрап:
App::build(array('Model' => array('/path/to/shared-stuff/Model')));
Удалена модель User.php из исходного местоположения [website-1/app/Model].
После этих шагов, кажется, работает, модель User.php правильно загружается из папки [shared-stuff] (я проверял, что печать App::objects('Model' ); указана модель User). Однако на самом деле это не работает, когда я вызываю эту модель из UsersController в функции login(), вход в систему не работает (хотя я не получаю никакой ошибки, даже с отладкой, установленной на 2).
В этой модели используется конфигурация базы данных, отличная от конфигурации по умолчанию (таблица users находится в базе данных, отличной от базы данных по умолчанию). Я не знаю, имеет ли это значение.
Одно можно сказать наверняка: если я оставлю точно такую же модель User.php в ее исходном местоположении ( [website-1/app/Model]), все будет работать нормально, включая логин, так что это проблема с тем, как я пытаюсь настроить все это совместное использование, а не с самой моделью.
Любые идеи, что я делаю неправильно?