Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony] jak pobrać id z adresu url
Forum PHP.pl > Forum > PHP > Frameworki
nieraczek
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 ?
cinekz
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.
mike
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.
nieraczek
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
mike
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() ?
nieraczek
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
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.