2012-04-18 17 views
10

Próbuję wygenerować elementy dla mojej aplikacji Symfony 2. Podmioty będą współdzielone przez kilka pakietów (i może kilka aplikacji), a więc nie chcę, aby były częścią pakietu. Chcę, aby znajdowały się w folderze src/MyApp/Entity.Symfony2/Doctrine2: Generowanie elementów znajdujących się poza pakietem

mam już yml dla moich podmiotów, przechowywanych w src/MojaApl/podmiot/config/doktryny (class1.orm.yml, ...)

Próbuję wygenerować klas corresonding PHP przy użyciu doktryna: generowania: podmioty zadanie

Oto co mam w moim app/config/config.yml

orm: 
    auto_generate_proxy_classes: %kernel.debug% 
    auto_mapping: false 
    mappings: 
     AppRest: 
     type: yml 
     prefix: AppRest\Entity 
     dir: %kernel.root_dir%/../src/AppRest/Entity/config/doctrine 

Oto komenda używana do generowania jednostek

php app/console doctrine:generate:entities AppRest/Entity 

Oto wyjątek otrzymuję

[InvalidArgumentException] 
Bundle "AppRest" does not exist or it is not enabled. 

chcę, aby zrozumieć, że nauka nie próbuję wygenerować podmioty tha są w wiązce. Próbowałem również określić opcję --path (--path = src/AppRest/Entity), ale nic nie zmieniło.

Czy ktoś może pomóc?

Edit:

usunąłem dodatkową przestrzeń w moim katalogu, który rozwiązał problem. Opcja ścieżki musi być określona jako

+1

Nie sądzę, będziesz miał dużo szczęścia z coraz S2 generowanie i wykorzystanie Obiekty D2 poza pakietem. Po prostu umieść je we własnym pakiecie i gotowe. Łatwo udostępniać jednostki w wielu pakietach. – Cerad

+0

+1 Używanie Sf2 w połączeniu z Doctrine2 pozwala zaakceptować implementację Doctrine przez Sf2 ... – AlterPHP

Odpowiedz

3

Właściwie po prostu brakowało mi spacji w powyższej opcji dir. Działa to teraz, ale wciąż zastanawiam się, czy to jest najlepszy sposób.

+3

Celem pakietu jest zintegrowanie kodu PHP z Symfony. Im więcej kodu przesuniesz poza pakiet, tym mniej zależy od Symfony. –

+0

Pakiet to najlepszy sposób na przejście. Spróbuj zbudować kilka pytań, zanim znajdziesz się za daleko. Możesz napotkać tam pewne problemy. – Cerad

+1

Tak, dokonaliśmy ponownej oceny tego i wybraliśmy wdrożenie z CoreBundle, który zawiera nasze jednostki, oraz wyspecjalizowane pakiety, które odnoszą się do tego CoreBundle – David

-1

Gdy wystąpi taki błąd, sprawdź, czy podałeś nazwę skrótu pakietu, a nie nazwę katalogu pakunków. Na przykład, jeśli masz Acme \ DemoBundle, jego skrót to AcmeDemoBundle. W takim przypadku

jest NIEPRAWIDŁOWY.

prawidłowa brzmi:

orm: 
    mappings: 
     AcmeDemoBundle: 
      .... 
Powiązane problemy