Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony] jak pobrać id z adresu url
nieraczek
post 11.02.2009, 16:39:41
Post #1





Grupa: Zarejestrowani
Postów: 405
Pomógł: 6
Dołączył: 12.01.2007

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


Uczę się php i nie wiem jak pobrać id z adresu url.
Np. mam adres:
http://localhost:81/biblioteka/polacz/id/1

Chciałbym pobrać to id w pliku xxxSuccess.php a nie w actions.class.php - tam wystarczyłoby użyć $request->getParameter('id'). A jak pobrać 'id' w pliku typu Success ? Próbowałem już nawet tradycyjnym sposobem z php:
<?php echo $_GET["id"]; ?>

Jednak w symfony adres url jest bez ?= i tak się nie da tongue.gif Istnieje jakiś sposób ?
Go to the top of the page
+Quote Post
cinekz
post 11.02.2009, 16:47:54
Post #2





Grupa: Zarejestrowani
Postów: 50
Pomógł: 6
Dołączył: 15.06.2006

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


A po co ci w widoku takie dane? Przecież możesz sobie taką zmienna przekazać do widoku z kontrolera.

Ja ci polecam najpierw pojąć idee MVC, a potem dopiero zabierać się za cokolwiek.

Pozdrawiam, Marcin.
Go to the top of the page
+Quote Post
mike
post 11.02.2009, 17:06:18
Post #3





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


W widoku jest dostęp do kilku wybranych obiektów. Na przykład $sf_user czy $st_request
Możesz więc zrobić tak: $sf_request->getParameter('id')

Mocno się jednak zastanów czy dobrze robisz odwołując sie do obiektu żądania wewnątrz widoku. Rzadko jest uzasadnienie.
Go to the top of the page
+Quote Post
nieraczek
post 11.02.2009, 17:06:26
Post #4





Grupa: Zarejestrowani
Postów: 405
Pomógł: 6
Dołączył: 12.01.2007

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


Rozumiem już MVC.
Chodzi o to, że w xxxSuccess.php zrobiłem zwykły formularz w php, bo nie udawało mi się zrobić go przy pomocy formularzy symfony w pliku formularzForm.class. Gdybym go zrobił przy użyciu formularz symfony to wystarczyłoby w pliku actions zrobić:
  1. <?php
  2. $this->forward404Unless($ksiazki = Doctrine::getTable('Ksiazki')->find(array($request->getParameter('id'))), sprintf('Object ksiazki does not exist (%s).', array($request->getParameter('id'))));
  3. $this->form = new KsiazkiForm($ksiazki);
  4. ?>


A w pliku xxxSuccess:
  1. <form action="<?php echo url_for('biblioteka/submit/ ? '?id=.$form->getObject()->getid() ) ?> >
  2. $form->getObject()->getid()


Tymczasem ja zrobiłem formularz w zwyczajny sposób w pliku xxxSuccess.php i potrzebuję na końcu adresu url w 'form action' wstawić id książki.

Rozumiecie o co mi chodzi ? blinksmiley.gif
Go to the top of the page
+Quote Post
mike
post 11.02.2009, 17:09:02
Post #5





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(nieraczek @ 11.02.2009, 17:06:26 ) *
Tymczasem ja zrobiłem formularz w zwyczajny sposób w pliku xxxSuccess.php i potrzebuję na końcu adresu url w 'form action' wstawić id książki.
Skoro wyświetlasz formularz związany z konkretną ksiązką to znaczy, że najprawdopodobniej ją masz. Czemu więc nie napiszesz $book->getId() ?
Go to the top of the page
+Quote Post
nieraczek
post 11.02.2009, 17:28:51
Post #6





Grupa: Zarejestrowani
Postów: 405
Pomógł: 6
Dołączył: 12.01.2007

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


Mike niestety nie mam. Bo zrobiłem w xxx.Success.php dwa formularze. Chodzi o to, że mam na głównej stronie wyświetlone książki i przydzielonych do nich autorów, obok każdej z nich dałem linka do następnej strony z formularzami, linka kończącego się identyfikatorem książki.
Na stronie xxx.Success.php zrobiłem formularz z select listą, w select liście są wyświetlani tylko autorzy przydzieleni do danej książki i można usuwać autorów (tylko nie usuwać autorów z tabeli Autorzy a z tabeli KsiazkiAutorzy - znaczy usuwać przydział), a na drugim formularzu jest druga select lista tylko z autorami nie przydzielonymi do danej ksiązki i za jej pomocą można przydzielać autorów do książki. Wyświetlane są w tych select listach oczywiście imiona i nazwiska tych autorów, a zwracane są ich identyfikatory.


W action.class.php w funkcji index mam tylko:
  1. <?php
  2. $this->autorzy_list = Doctrine::getTable('Autorzy')->getAutorzyPrzydzieleniKsiazce($request->getParameter('id'));
  3. $this->nieautorzy_list = Doctrine::getTable('Autorzy')->getAutorzyNiePrzydzieleniKsiazce($request->getParameter('id'));
  4. ?>


A te funkcje getAutorzyPrzydzieleniKsiazce() i getAutorzyNiePrzydzieleniKsiazce() zwracają tylko id, imie i nazwisko z tabeli Autorzy a nie z tabeli Ksiazki. Więc raczej nie da rady chyba zrobić wg Twego sposobu opisanego w Twoim drugim poście chyba, że zmieniłbym zapytanie.

Podsumowując: Zrobiłem wg Twego sposobu czyli Mike podanego w jego pierwszym poście a więc:
  1. <form action="<?php echo url_for('biblioteka/submit?id='.$sf_request->getParameter('id'))....
  2. ?>

oraz
  1. <form action="<?php echo url_for('biblioteka/submit2?id='.$sf_request->getParameter('id'))....
  2. ?>

Funkcja 'submit' odpowiada u mnie za dodawanie autorów do ksiązki a submit2 za usuwanie autorów z książki.

I działa - dziękuję smile.gif biggrin.gif tongue.gif

Ten post edytował nieraczek 11.02.2009, 17:32:56
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: 1.07.2025 - 17:11