Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SF][SF2] Pluginy/Helpery/Partiale/Routing, W jaki sposób można stworzyć i wykorzystać Pluginy/Helpery/Partiale ?
basso
post
Post #1





Grupa: Zarejestrowani
Postów: 155
Pomógł: 1
Dołączył: 12.12.2010

Ostrzeżenie: (0%)
-----


Uwaga do Admina
Gdy zaczynam nowy temat, nie mogę dać samego tagu [SF2] tylko muszę dać [SF][SF2] bo wyskakuje mi jak dam samo [SF2], że tytuł powinien być opatrzony tagami. Bardzo proszę o poprawkę tego, bo [SF][SF2] bardziej mi się kojarzy z Symfony 1 i Symfony2. Będzie to wszystko ładniejsze i bardziej czytelne. Z góry ślicznie dziękuję.


Teraz seria pytań do SF2.


1. W Zendzie miałem typowe wywołanie /:Controler/:Akcja. Routowanie następowało "z buta" dla :controler/:akcja. W Symfony2 z tego co widzę, to każda akcja = nowy wpis w routingu (nowa trasa). Czy można zrobić, tak w routingu, abym podawał tylko nazwę kontrolera, a kolejny argument będzie akcją? Bo ja mam 20 akcji i nie chce mi się zaśmiecać routingu ;/

Zend:
Routing defaultowy wygląda tak => :module/:controller/:action
Cms/Blog/nowy
Cms/Blog/edytu
Cms/Blog/najnowsze
Cms/Blog/komentarz

Co bym nie robił, to każda struktura Cms/Blog/X powoduje, że mam 0 wpisów do ROUTINGU i wszystko śmiga.


W Symfony 2 ja widzę natomiast: KATASTROFĘ (aż mnie ręce bolą):
Cms/Blog/nowy => nowy wpis do routingu
Cms/Blog/edytuj=> nowy wpis do routingu
Cms/Blog/najnowsze => nowy wpis do routingu
Cms/Blog/komentarz=>nowy wpis do routingu
.... /......./.............. => N-TY wpis do routingu

Nie neguje tego, po prostu chciałbym się dowiedzieć jak to działa. Przeczytałem i książkę pana Gajdy i COOCKBOOK i polską stronę Symfonii 2 i nigdzie nie mogę znaleźć tego typu ogólnego routingu. Boje się, a chyba na to wygląda, że każda akcja to nowy wpis do routingu. Bardzo proszę o wytłumaczenie czy tak to wygląda czy nie.

2. Czy istnieje tutaj coś takiego jak dołączanie swoich klas np. pluginów, helperów bądź partiali?
Partiale rozumiem jako cząstkowe pliki .twig więc z tym nie ma problemu, chodź z podpięciem modelu nie poszlaje, po prostu jakąś powtarzająca się struktura html. Chyba, że można zwrotkę jakąś z Entity do widoku twiga zaciągnąć, którą będzie ten partial wykorzystywał ? Hmm nie wiem.
Helpery: Ja w Symfony 2 widzę helpery jedynie jako : Wywoływanie kontrolerów w widoku przez {% render 'IbmCmsBundle:Helpers:menu' %}. Renderowany jest wtedy widok danego kontrolera. Jest to fajne, ale nie do końca... każdy może wpisać przecież taki adres do przeglądarki i zobaczy jakąś część kodu, ale rozumiem, że tak to wygląda.
Pluginy.A co z pluginami? Chodzi mi o jakieś swoje klasy abym mógł dołączać z moimi ulubionymi funkcjami abym sobie je ładował do projektu (czy pakietu) i mógł z niego korzystać. Bo nie uśmiecha mi się wykorzystanie wszystkich funkcji jako wywołanie akcji danego kontrolera (kontroler/akcja) w widoku bądź gdzieś indziej ;/

3. Dołączanie zewnętrznych zasobów, ze struktury danego pakietu (Przy generowaniu bundla w momencie "Do you want to generate the whole directiory strukture[no]? dajemy YES.
Tworzy nam się wtedy w danym Bundlu (pakiecie) struktura public/css , public/image , public/js

Pytanie moje brzmi: Jeśli katalogi struktury:
[pakiet]/Resources/public/css/style.css /
[pakiet]/Resources/public/images/cos.jpg ,
[pakiet]/Resources/public/js/skrypcik.js

nie są dostępne za pomocą HTTP TO: Ja budując stronę muszę budować ją korzystając wyłącznie z plików:

[projekt]/web/bundles/[pakiet]/css/
[projekt]/web/bundles/[pakiet]/images/
[projekt]/web/bundles/[pakiet]/js/

i później sobie je przekopiować do struktury [pakiet]/Resources/public/css/style.css tylko po to , żeby ktoś mógł sobie to zainstalować?

Troszkę to moim zdaniem jest "od tyłu robione". Ale chciałem się upewnić, bo na początku wrzuciłem pliki styli do [pakiet]/Resources/public/css/style.css / patrzę => NIC SIĘ NIE ŁADUJE .
Dopiero po przekopiowaniu bądź instalacji php app/console assets:install web mogłem pracować na plikach z publicznego katalogu [projekt]/web/bundles/[pakiet]/images/.

Podsumowując: Buduje wszystko na plikach z katalogu web
[projekt]/web/bundles/[pakiet]/css/
[projekt]/web/bundles/[pakiet]/images/
[projekt]/web/bundles/[pakiet]/js/

i jak już sobie cały BUNDEL zbuduje, to wrzucam to do Resources, tylko po to, aby ktoś mógł sobie to zainstlować/przekopiować do WEB?
Fajne to jest, że jest wszystko w 1 paczce, po prostu chciałem się dopytać, czy może można jakoś podpiąć się i pracować na plikach z katalogów pakietu tj.
[pakiet]/Resources/public/css/style.css /
[pakiet]/Resources/public/images/cos.jpg ,
[pakiet]/Resources/public/js/skrypcik.js


4. Czy w akcjach kontrolerów mogę korzystać raz z annotation, a raz BEZ (IMG:style_emoticons/default/smile.gif) czyli po przez render w akcji ?

5. Czy ktoś korzystał z generowania Entity na podstawie YML? Ja korzystam z Entity w php. Pytanie brzmi: czy przy korzystaniu z .yml też generują się metody w ENTITY?


Na razie tyle pytań co mam, jeśli ktoś coś wie to byłbym wdzięczny za odpowiedzi. Z góry serdecznie dziękuję.

Ten post edytował basso 24.04.2013, 23:40:09
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Mając zapisaną gdzieś klasę CMS_MY_METOD_PLUGIN możesz sobie w dowolnym miejscu zrobić $obj = new CMS_MY_METOD_PLUGIN() i oczywiście będzie to działać, ale domyślam się, że nie o to Ci chodzi. Podlinkowałem już stronę w dokumentacji Service Containera - zapoznaj się z nią bardzo dogłębnie, poczytaj (Google) więcej n/t Inversion of Control (IoC) oraz Dependency Injection [Container]. Nie koniecznie muszą to być materiały bezpośrednio związane z Symfony, gdyż tematy te nie są dla niego specyficzne. Prawdopodobnie większość wartościowych materiałów, będzie omawianych na przykładzie Javy. Jednakże zrozumienie tych na dobrą sprawę bardzo prostych rzeczy jest niezbędne jeżeli chcesz poprawnie korzystać z Symfony, czy w ogóle OOP jako takiego.

Jest to potrzebne, ponieważ obiekty z warstwy modelu Twojej aplikacji powinny być zarejestrowane jako usługi w DICu. Teraz, jeżeli któryś z tych modeli potrzebuje dostępu do CMS_MY_METOD_PLUGIN, powinien dostać obiekt tej klasy w postaci zależności (dokumentacja wszystko bardzo przejrzyście tłumaczy). Podesłałem już też link n/t tworzenia rozszerzeń dla Twiga, oczywiście możesz przekazać dowolny obiekt jako zwykłą zmienną szablonu (albo nawet jako globalną zmienną dla wszystkich szablonów, ale jak z wszystkim co globalne jest to raczej złe rozwiązanie).

Cytat
Jak sytuacja zatem będzie wyglądała na serwerze? Bez problemu będę mógł przegrać cały projekt i będzie działać. Kojarzysz może?
Nawet jeżeli nie będziesz miał możliwości utworzenia symlinków, zawsze możesz utworzyć zwykłą, twardą kopię zasobów wykorzystując assets:install (bez argumentu --symlinks).
Go to the top of the page
+Quote Post
basso
post
Post #3





Grupa: Zarejestrowani
Postów: 155
Pomógł: 1
Dołączył: 12.12.2010

Ostrzeżenie: (0%)
-----


Cytat(Crozin @ 25.04.2013, 19:55:34 ) *
Nawet jeżeli nie będziesz miał możliwości utworzenia symlinków, zawsze możesz utworzyć zwykłą, twardą kopię zasobów wykorzystując assets:install (bez argumentu --symlinks).


Ale już wtedy będę musiał pracować na plikach [projekt]/web/bundles/[pakiet]/js/ ? Wiem jak głuchy z niemym (IMG:style_emoticons/default/smile.gif) , ale wole 100x zapytać niż robić coś źle (IMG:style_emoticons/default/smile.gif)

Po prostu zacząłem robić projekt i nie wiem, czy wrzucać to do [projekt]/web/bundles/[pakiet]/js/ i pracować na tym (bo działa) a na końcu wrzuci do Bundle/Resources/public/js czy są właśnie tak jak opisjesz zdrowsze => prawidłowe metody (IMG:style_emoticons/default/smile.gif)

Ten post edytował basso 25.04.2013, 19:08:27
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 16.10.2025 - 18:32