Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne]Symfony2 - generowanie URL
Forum PHP.pl > Forum > Przedszkole
kosmos
Witam,
Czytam dokumentację i niestety na rozdziale o generowaniu ścieżek URL wyrosła przede mną betonowa ściana!
Nie miałem nigdy styczności z taką funkcjonalnością i brakuje mi wiedzy, zrozumienia zasady działania.

Przytoczę tu przykład z dokumentacji:

  1. class MainController extends Controller
  2. {
  3. public function showAction($slug)
  4. {
  5. // ...
  6.  
  7. $url = $this->get('router')->generate('blog_show', array('slug' => 'my-blog-post'));
  8. }
  9. }


1. Do czego służy generowanie URL w kontrolerze?
2. Jeśli w tym przypadku adres siedzi w zmiennej $url to jak mogę go wykorzystać?
3. Przydałby mi się jakiś prosty przykład ...

Pomożecie?

EDIT:
zrobiłem swój własny przykład w którym w poprzez Response wyświetliłem sobie identyczny adres strony jaki mam w url ale wydaje mi się to bez sensu smile.gif
w drugim przypadku po wejściu z przykładowego adresu: http://localhost/Symfony/web/app_dev.php/abc/link1/4
wygenerowałem sobie taki adres: http://localhost/Symfony/web/app_dev.php/abc/link1/strona

Pozostaje pytanie: do czego taką funkcjonalność można wykorzystać?
by_ikar
No raz to url generator sprawdzi poprawność parametrów które podajesz. Dwa to poda adres do tego linku tak, że będziesz mógł aplikacje przenieść do katalog wyżej (lub kilku) a adres wciąż będzie poprawny (poprostu uwzględni pathinfo). Po trzecie, to przy adresach bez parametrów, będziesz mógł je zmienić na poziomi routingu i w obrębie całej aplikacji adres będzie zmieniony.
kosmos
Dzięki za nakierowanie na temat.
Zapewne w trakcie pracy z Symfony2, kiedy przyjdzie mi korzystać z tego rozwiązania, praktyka będzie najlepszym nauczycielem.

Pozdr.
by_ikar
Jasne, jeżeli twój kontroler dziedziczy Symfony\Bundle\FrameworkBundle\Controller\Controller to możesz to zapisać prościej:

  1. class MainController extends Controller
  2. {
  3. public function showAction($slug)
  4. {
  5. // ...
  6.  
  7. $url = $this->generateUrl('blog_show', array('slug' => 'my-blog-post'));
  8. }
  9. }


Co zresztą masz trochę niżej (jak dobrze pamiętam) pokazane.
pedro84
Cytat(kosmos @ 17.07.2014, 19:59:21 ) *
1. Do czego służy generowanie URL w kontrolerze?

Chociażby do przekierować. Jeśli zmienisz jakąś trasę, nie musisz grzebać w kodzie, bo wygenerowany URL będzie zawsze aktualny. Za wyjątkiem sytuacji, w której dodasz bądź zmienisz jakiś parametr.

Cytat(kosmos @ 17.07.2014, 19:59:21 ) *
2. Jeśli w tym przypadku adres siedzi w zmiennej $url to jak mogę go wykorzystać?

Na przykład do przekierowania

Cytat(kosmos @ 17.07.2014, 19:59:21 ) *
3. Przydałby mi się jakiś prosty przykład ...

  1. $url = $this->generateUrl('my_route_name', array('name' => 'Kinga'));
  2.  
  3. return new RedirectResponse($url);
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.