Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony] Routing i problem z pobieraniem z bd
Forum PHP.pl > Forum > PHP > Frameworki
Rem!g
Witam.
Jako że sam dopiero zaczynam przygodę z Symfony problem, który przedstawię pewnie będzie błachy.

Otóż. Gdy próbuję użyć w akcji Index url_for:
  1. url_for('pokaz_tytul', $ksiazka)


link przekierowywuje mnie do Show, tyle że pobiera zawsze pierwszy wpis z bazy danych. Używając $ksiazka->getTytul() zwraca on mi pierwszy element z bazy. W adresie URL znów jest poprawny tytuł do jakiego chciałem linkować.

Podam część źródła (myślę) potrzebnych plików do zlokalizowania błędu.

routing.yml:
  1. pokaz_tytul:
  2. url: /ksiazki/:tytul_slug
  3. class: sfDoctrineRoute
  4. options: { model: KatalogKsiazki, type: object }
  5. param: { module: ksiazki, action: show }
  6. requirements: { sf_method: get }
  7.  
  8. ...
  9. dalsza część z default rules - chyba nie istotna


KatalogKsiazki.class.php:
  1. class KatalogKsiazki extends BaseKatalogKsiazki
  2. {
  3. public function getTytulSlug()
  4. {
  5. return Katalog::slugify($this->getTytul());
  6. }
  7. }


action.class.php:
  1. public function executeShow(sfWebRequest $request)
  2. {
  3. $this->ksiazka = $this->getRoute()->getObject();
  4. $this->forward404Unless($this->ksiazka);
  5. }



Proszę o pomoc Próbowałem jakoś błąd zlokalizować, ale jak widać nic z tego. Przypuszczam, że źle używam jakiegoś helpera (url_for)? albo coś z getRoute() i getObject() źle jest. Nie wiem. Jak pisałem naukę dopiero zaczynam

Pozdrawiam
dantes
Przepraszam, bo piszę z głowy, więc racji mieć nie muszę. Ale czy jeśli w link_to lub url_for odwołujemy się do własnej zdefiniowanej ścieżki, to nie powinno być, zamiast standardowego 'module_name/action_name', użyte
  1. url_for('@pokaz_tytul', $ksiazka)
?

edit:

pogrubienie słabo wyszło, chodzi o @ przed nazwą ścieżki
Rem!g
Cytat(dantes @ 9.12.2009, 20:36:38 ) *
Przepraszam, bo piszę z głowy, więc racji mieć nie muszę. Ale czy jeśli w link_to lub url_for odwołujemy się do własnej zdefiniowanej ścieżki, to nie powinno być, zamiast standardowego 'module_name/action_name', użyte
  1. '@pokaz_tytul', $ksiazka)
?

edit:

pogrubienie słabo wyszło, chodzi o @ przed nazwą ścieżki


dantes - dzięki za odpowiedź.

Lecz to nie to. Chciałem dodać że w ShowSuccess.php gdy pobieram obiekt $ksiazka->getjakas_skolumna_z_bd to zwraca mi zawsze pierwszy rekord z bazy o id 1. Mimo iż URL jest poprawny (z poprawną wartością Tytuł). Bardzo proszę o pomoc i dziękuję za
bikerszymek
  1. pokaz_tytul:
  2. url: /ksiazki/:tytul_slug/:id
  3. class: sfDoctrineRoute
  4. options: { model: KatalogKsiazki, type: object }
  5. param: { module: ksiazki, action: show }
  6. requirements:
  7. id: \d+
  8. sf_method: [get]


tak powinno dzialac
Rem!g
Dziękuję bardzo ! : ) Działa. Widocznie źle to zrozumiałem. Jako początkujący mam małe pytanie, czy możesz powiedzieć dlaczego potrzebuje id? Sam myślałem, że w ten sposób po prostu pobierze z bazy poprzez nazwę. Jeszcze raz dziękuję.
smile.gif
bikerszymek
Ja sam nie jestem mega doświadczony jeśli chodzi o symfony (raptem pół roku) ale ja to widzę tak, że jesli chcesz coś wyciągnąć z bazy najlepiej zrobić to po unikalnym kluczu, tytuł np może się powtarzać a id będzie unikalne w obrębie tabeli. Tak wiec ja zawsze dodaje /:id do reguły - zawsze działa tak jak powinno.

Pzdr
Rem!g
Dzięki Ci jeszcze raz !
Pozdrawiam
Crozin
Swoją drogą: widzę, że masz jakieś Katalog::slugify() - Doctrine ma domyślnie udostępniony: Sluggable Behaviour
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.