2015-03-15 1 views
5

У меня проблема с настройкой Propel with Composer в моем проекте php.Propel and Composer в PHP: нет связи

это как выглядит мой каталог дерева:

project/ 
    |--/public_html/index.php 
    |--/app/ 
    | |--data/ 
    | |  |--propel.json 
    | |  |--schema.xml 
    | |--vendor/ 
    | |--composer.json 

В/данные/папки Я бы хранить все мои файлы PROPEL, что сгенерированные классы /, генерируемой конф/и сгенерированных SQL /.

Для реализации этой цели, с терминалом в/данных/папке, я ставлю команды в следующей последовательности:

$ propel sql:build 
$ propel model:build 
$ propel config:convert 

и все идут правильно.

Для того, чтобы более подходящую работу, в composer.json я добавил эту дополнительную функцию:

"autoload": { 
    "classmap": ["./data/generated-classes/"] 
} 

так, что почти в теории, поставив

require '../app/vendor/autoload.php'; 

внутри index.php должен быть достаточно. К сожалению, когда я пытаюсь использовать один классы PROPEL внутри этой страницы, возвращает ошибку

Тип: Propel \ время выполнения \ Exception \ RuntimeException

Сообщение: Нет соединение, определенное для базы данных "my_api". Вы забыли определить соединение или неправильно написано?

файл: 'C: \ pathToMyProject' \ Проект \ приложение \ поставщик \ передвижение \ передвижение \ SRC \ Propel \ время выполнение \ ServiceContainer \ StandardServiceContainer.php

Line: 279

Я думал, что propel не находит файл propel.json, который хранится в папке/data /.

В качестве дополнительного, если в index.php я просто добавить

require_once '../app/data/generated-conf/config.php'; 

все идет правильно.

Есть трюк для автозагрузки без использования этого последнего require_once? (очевидно, держите дерево как есть).

Спасибо за чтение.

+0

Очень любопытно, как хорошо. – pbond

ответ

4
  • Порядок команд консоли имеет важное значение:

    • composer install или update, чтобы принести движение
    • затем команды для создания моделей с Propel
    • затем повторно сканирования/повторной генерации файлы автозагрузки с composer dump-autoload --optimize
  • Вы можете включить файл конфигурации в процесс начальной загрузки вашего приложения - например, у вас уже есть.

  • Или вы могли бы использовать files директивы в Композиторах autoload раздела определить файл (ы), который должен быть включен в каждом запросе.

    Referencing: https://getcomposer.org/doc/04-schema.md#files

    "autoload": { 
        "files": ["./data/generated-conf/config.php"], 
        "classmap": ["./data/generated-classes/"] 
    } 
    
+1

это работает, спасибо! –

+0

Рад, что я мог помочь :) –