Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SF2][Symfony2][Symfony] Jaki rodzaj routingu wybrac
Forum PHP.pl > Forum > PHP > Frameworki
Wasper
Hej. Czytam sobie o symfony2 i zaczynam sie zastanawac czy wybrac yml czy wybrac annotacje.
Ksiazka pana gajdy w ktora sie wyposazylem opiera sie na annotacjach, ale wiele tutoriali znowu opiera sie na ymlach.
Chcialbym poznac Wasza opinie, plusy, minusy itp.
Wasper
Pisze o konfiguracji routingu, bo w ksiazce, ktora sluzy mi za tutorial sa uzywane annotacje, a nie wiem czy nie zdrowiej miec konfiguracje mimo wszystko w jednym pliku niz rozsiane po kontrolerach
szok
Lepiej w Yamlu, dlatego ze jak projekt Ci się rozrośnie smile.gif to potem będziesz szukał po wszystkich controlerach i szukał jaki adres odpowiada za co.

A tak wchodzi o jeden pliku (czy tak kilku dla bundli) i już wiesz o co biega smile.gif
Wasper
To dlaczego wszyscy tak zachwalaja ta annotacje?

Czyli np jakbym w srodowisku produkcyjnym chcial ustawic "strone startowa" to musze odpowiednio dodac do routing.yml

  1. _welcome:
  2. pattern: /
  3. defaults: { _controller: JakisBundle:Jakiskontroler:jakasakcja }
Szymciosek
... a w adnotacjach (annotation masz po angielsku) ustawiasz

w konkretnym kontrolerze:
  1. /**
  2. * @Route("/")
  3. */
  4. public function indexAction()
  5. {
  6. //method body
  7. }


Dodatkowo w inny prosty sposób możesz:
  1. /**
  2.   * @Route("{lang}/{slug}", requirements={"lang" = "(pl|en)"})
  3.   * @Route("{lang}/{slug}/{section}", requirements={"section" = ".+"})
  4.   */


Czyli ustawiasz sobie coś takiego jak {lang} wtedy w metodzie tworzysz, dodatkowo jak możesz zauważyć jest od razu na "tacy" podane, że lang może przyjąć tylko wartości pl lub en.
  1. public function indexAction($lang) { }
Wasper
No wlasnie.
W ksiazce sa annotacje, wszedzie gdzie czytam pisze, ze standardowo annotacje..
a poza tym annotacje wydaja mi sie bardziej przejrzyste... nie wiem, zaczynam, pewnie i tak naucze sie obslugiwac i to i to ale poki co chyba bede dzialal z ksiazka i poslugiwal sie anotacjami.
Chyba, ze to jakies kategorycznie zle posuniecie smile.gif
Osobiscie tez wole miec konfig w pliku, ale jak mam tak napisany obszerny tutorial to chyba poki co nie bede kombinowal. Jak sie polapie o co chodzi to pewnie opanuje i drugie.
Jak myslicie ?
sowiq
Cytat(szok @ 28.03.2013, 11:23:49 ) *
Lepiej w Yamlu, dlatego ze jak projekt Ci się rozrośnie smile.gif to potem będziesz szukał po wszystkich controlerach i szukał jaki adres odpowiada za co.


Polecam sekcję Visualizing & Debugging Routes z Home > Documentation > The Book > Routing

Cytat
Kod
$ php app/console router:debug

The command will print a helpful list of all the configured routes in your application:
Kod
homepage              ANY       /
contact               GET       /contact
contact_process       POST      /contact
article_show          ANY       /articles/{culture}/{year}/{title}.{_format}
Wasper
Juz to studiowalem rano smile.gif
Ale dzieki wink.gif

Po prostu sie zastanawiam co bedzie dla mnie dobre na poczatek.. i w ogole.
Czy jak ksiazke mam oparta na annotacjach to warto od razu pchac sie w ymle.
No nie wiem, jak zawsze trzeba wybierac... :/
Szymciosek
Najprościej - spróbuj...
Tzn. spróbuj napisać coś na yml, a następnie spróbuj napisać coś z adnotacjami, zobaczysz sam co jest dla Ciebie lepsze, bardziej czytelne itd.

Tutaj nie dowiesz się konkretnie od wszystkich, bo każdy napisze coś innego.
Działanie yml/adnotacje - takie samo, tyle tylko, że Tobie jedno może się lepiej spodobać, lepiej Ci się będzie z tym pracować, a inny powie, że nie, bo drugie jest lepsze...
Wasper
A czego ja jeszcze nie wiem smile.gif

mam glowny plik routingu
  1. page_index:
  2. resource: "@PageIndexBundle/Resources/config/routing.yml"
  3. prefix: /


i plik w bundlu

  1. page_index_homepage:
  2. pattern: /hello/{name}
  3. defaults: { _controller: PageIndexBundle:Default:index }


wiec wpisanie jakasnazwaurl/hello/Wasper

wyswietla ladnie Hello, Wasper

ale dlaczego jak dokonam np zmian w routingu wew. bundla
  1. page_index_homepage:
  2. pattern: /gruby/{name}
  3. defaults: { _controller: PageIndexBundle:Default:index }


bardzo niewielkie zmiany, w sumie nijakie, a wpisanie
jakasnazwaurl/gruby/Wasper skutkuje

  1.  
  2. Oops! An Error Occurred
  3. The server returned a "404 Not Found".
  4. Something is broken. Please e-mail us at [email] and let us know what you were doing when this error occurred. We will fix it as soon as possible. Sorry for any inconvenience caused.


why?
Szymciosek
W przypadku takich zmian działaj w środowisku dev czyli adres wygląda powiedzmy: .../web/app_dev.php/gruby/Szymek

lub jak wolisz, to usuwaj katalog cache (app/cache). Tam jest przechowywana strona, a Ty zapewne siedzisz teraz w środowisku prod czyli Twój link to: /web/gruby/Szymek lub /web/app.php/gruby/Szymek

Środowisko prod - tworzy sobie cache tylko na początek, a później z niego korzysta, pozwala to na szybsze działanie strony
Środowisko dev - tworzy cache za każdym razem, polecane właśnie w takich pracach jak Twoje, wolniej działa strona.
Wasper
I tu mnie masz wink.gif
Nie wiedzialem, ze to tak dziala smile.gif
Smiga teraz, dzieki wielkie!!
Szymciosek
Wydaje mi się, że w tej książce to też jest opisane (jeśli mowa o http://helion.pl/ksiazki/symfony-2-od-pods...jda,symfo2.htm)
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.