Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony] Podział projektu
Forum PHP.pl > Forum > PHP > Frameworki
Adam Nowak
W ramach "ćwiczeń" będę wykonywać pewien projekt przy użyciu Symfony. Z założenia będą w nim trzy aplikacje: sklep, forum, backend.
Mimo iż projekt jest stricte treningowy zarówno sklep jak i forum muszą być osobnymi aplikacjami (nie mogą być modułami).

I zastanawiam się jak mógłbym wygodnie "połączyć" obie frontendowe aplikacje. Chodzi mi o proste zadania typu:
jesteśmy w akcji store/product/show i chcę wykonać np. przekierowanie do: board/thread/show?id=123. Gdyby to było w obrębie jednej aplikacji wystarczyłoby
  1. <?php
  2. $this->redirect('board/show?id=123');
  3. ?>
Ale tutaj nie ma takiej możliwości. Domyślam, się, że trzeba by było przed wykonaniem takiego przekierowania załadować odpowiednie dane z innej aplikacji - co niestety wiązałoby się z sporym nakładem dodatkowej pracy oraz zmiejszeniem czytelności.
Innym przykładem mogłoby być użycie komponentu z aplikacji forum, w szablonie jakiejś akcji z aplikacji sklepu.

Ma ktoś jakieś sugestie? Albo linki do jakiś atykułów - niestety, albo nie mogę wpaść na odpowiednią frazę, albo nie ma o tym za dużo w sieci napisanego. smile.gif

Pozdrawiam
Lonas
A nie możesz mieć sklepu i forum w jednej aplikacji ?
krowal
No właśnie trochę bez sensu żeby robić do tego oddzielne app. Ale skoro musisz to tu możesz znaleźć rozwiązanie: http://forum.symfony-project.org/index.php/m/50656/
Adam Nowak
Jeżeli to miałoby być jako jedna aplikacja to moduły musiałbym tworzyć na zasadzie:
Kod
frontend
  modules
    store_module1
    store_module2
    store_module3
    board_module1
    board_module2
    board_module3
Co nie wygląda mi na najładniejsze rozwiązanie. Pozatym na logikę widać, że sklep i forum to osobne aplikacje - a przy tym na tyle rozbudowane, że nie będzie ich można potraktować jako zwykły moduł, gdyż przypadałoby na niego zbyt wiele różnego rodzaju akcji.

Ogólnie sprowazda się to do tego, by z poziomu jednej aplikacji mieć dostęp do takich rzeczy jak reguły routera, możliwość wykonywania przekierowań pomiędzy aplikacjami itp.
Mógłbym napisać własne "wrappery" na obiekty sfResponse itp. i tam nadpisać część metod, tak by wywoływane bez dodatkowego paramteu działały dokładnie jak ich rodzice, ale zastanawiam się czy nie ma jakiegoś łatwiejszego rozwiązania.
Lonas
To stwórz sobie np aplikacje sklepu i dopisz osobny plugin forum, tak samo jak instaluje się gotowe dodatki
thomas2411
Istnieje możliwość tworzenia linków miedzy aplikacjami. Na blogu Symfony jest tutorial. Ja osobiście bym zrobić backend jako jedna aplikacja, frontend z forum i sklepem jako druga.
athabus
Linkowanie między aplikacjami w symfony jest "bolesne", ale da się to zrobić - jest nawet plugin. Zawsze możesz też dopisać sobie coś podobnego samodzielnie - nie powinno to być zbyt trudne.
Zacznij jednak od tego i tu.
Adam Nowak
Dzięki za wszystkie informacje. Z racji, że bardzo doświadczony przy pracy z Symfony nie jestem czy moglibyście powiedzieć mi jakich jeszcze problemów mogę się spodziewać przy pracy "cross-app"?
O route-ingu i cache-u wiedziałem od samego początku, ale czy coś jeszcze może mnie zaskoczyć? Modele, fromularze oraz moje własne czy też inne biblioteki są współdzielone ROOT/lib. Baaardzo mało prawdopodobne jest by dwie aplikacje miały korzystać ze wspólnego layoutu.
athabus
Pewnie będziesz miał problem z obiektem user czyli sesjami.
Ogólnie jeśli aplikacje mają ze sobą bardzo mocno współpracować to ich rozdzielenie nie jest dobrym pomysłem. Jeśli chodzi tylko to, że czasami pojawia się link z jednej na drugą to nie ma problemu.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.