Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony] Routing i problem z pobieraniem z bd
Rem!g
post 9.12.2009, 18:27:05
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 27.09.2008

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


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
Go to the top of the page
+Quote Post
dantes
post 9.12.2009, 20:36:38
Post #2





Grupa: Zarejestrowani
Postów: 29
Pomógł: 5
Dołączył: 22.09.2009

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


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

Ten post edytował dantes 9.12.2009, 20:37:13
Go to the top of the page
+Quote Post
Rem!g
post 9.12.2009, 21:11:00
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 27.09.2008

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


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
Go to the top of the page
+Quote Post
bikerszymek
post 9.12.2009, 21:13:29
Post #4





Grupa: Zarejestrowani
Postów: 91
Pomógł: 13
Dołączył: 23.08.2008

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


  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

Ten post edytował bikerszymek 9.12.2009, 21:17:48
Go to the top of the page
+Quote Post
Rem!g
post 9.12.2009, 21:29:05
Post #5





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 27.09.2008

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


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
Go to the top of the page
+Quote Post
bikerszymek
post 9.12.2009, 21:37:31
Post #6





Grupa: Zarejestrowani
Postów: 91
Pomógł: 13
Dołączył: 23.08.2008

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


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

Ten post edytował bikerszymek 9.12.2009, 21:39:33
Go to the top of the page
+Quote Post
Rem!g
post 9.12.2009, 22:16:13
Post #7





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 27.09.2008

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


Dzięki Ci jeszcze raz !
Pozdrawiam
Go to the top of the page
+Quote Post
Crozin
post 9.12.2009, 23:30:43
Post #8





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

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


Swoją drogą: widzę, że masz jakieś Katalog::slugify() - Doctrine ma domyślnie udostępniony: Sluggable Behaviour
Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 19.07.2025 - 12:44