Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony][Symfony2] usuwanie z bazy danych
Forum PHP.pl > Forum > PHP > Frameworki
dragon7
Witam. Mam taki problem. Tworzę formularz z wykorzystaniem createForm() i potrzebnej klasy, w którym umieszczam dane do edycji lub usunięcia. Niestety w tym formularzu nie jest tworzone żadne pole, odpowiadające id w obiekcie. W takim razie jak przekazać metodą POST id wybranego rekordu z bazy danych do edycji/usunięcia?
Crozin
Dwa rozwiązania:
1. Utwórz ukryte pole formularza z identyfikatorem obiektu.
2. Przekaż identyfikator w URL-u.
dragon7
Ze względów bezpieczeństwa GET odpada.

Co do drugiego, to wtedy framework wymaga stworzenia funkcji setId(), która domyślnie nie jest tworzona przez Symfony(bo i po co?). To nie jest tak jakby trochę odejście od stylu narzuconego przez framework?
Crozin
A co ma metoda GET/POST do adresu URL? Oczywiście, żądanie usunięcia zasobu (dowolnego) powinno lecieć metodą POST.
rzymek01
Można przekazywać GETem, ale trzeba pamiętać, żeby jakiś token dorzucić smile.gif
AxZx
Cytat(Crozin @ 30.07.2012, 15:44:42 ) *
A co ma metoda GET/POST do adresu URL? Oczywiście, żądanie usunięcia zasobu (dowolnego) powinno lecieć metodą POST.


a nie delete?
http://en.wikipedia.org/wiki/Representational_state_transfer
Crozin
@AxZx: HTML-owskie formularze wspierają tylko metody GET/POST, więc nie.
@rzymek01: A od kiedy to żądanie HTTP typu GET może jakiekolwiek dane przenosić?
@dragon7: Skoro ukryte pole formularza odpada, najlepszym rozwiązaniem będzie żądanie typu POST, na adres http.../resource/delete?id=5 - czy jakąkolwiek tam formę URL-a przyjmiesz.
rzymek01
@Crozin,
panie kochany, dla przykładu wyciąg z wiresharka:
- Expert Info (Chat/Sequence): GET /index.php?get1=abc&get2=123 HTTP/1.1\r\n

czy owe parametry get1 o wartości abc i get2 o wartości 123 to nie są dane?
Crozin
@rzymek01: Nie, to nie są dane z metody GET. To jest fragment URL-a, który jako taki może być użyty w dowolnej metodzie żądania HTTP.
Kod
POST /resource?var1=a&var2=b HTTP/1.1
...

postVar1=a&postVar2=b
Tutaj masz przykład żądania, które przesyła jakieś dane.

W PHP ktoś wymyślił by zmienne z URL-a, a konkretnie z części query [string], umieścić w zmiennej $_GET - nie wiem czym się ten człowiek kierował, ale bardziej nieodpowiedniej i mylącej nazwy chyba wymyślić nie mógł.

EDIT: Stawiam na to, że ów osoba wymyślająca nazwę dla zmiennej $_GET kierował się atrybutem action z HTML-owskich formularzy. Co jest oczywiście idiotycznym "kierowaniem się".
rzymek01
Nie zagłębiając się w teorię etc.
Idzie sobie żądanie GET na podany wyżej przeze mnie URL,
masz rację, że GET samo w sobie danych nie niesie, ale informację niesie adres URL, przez co de facto możemy zrobić skrót myślowy i powiedzieć, że niesiemy informację GETem (pośrednio, ale informacja jest dostarczana).
Crozin
Dane z URL-a czy nagłówków żądania (np. ciasteczka czy obsługiwane kodowania znaków) są dostępne przy wykorzystaniu dowolnej metody żądania HTTP, więc nie za bardzo można zrobić skrót myślowy "lecą GET-em". Więcej, metoda GET jasno określa, że żądanie nie przesyła żadnych danych w przeciwieństwie do POST czy PUT. Dane przesłane "przy użyciu metody" są dostępne w żądaniu dopiero po nagłówkach.
rzymek01
Cytat
Dane z URL-a czy nagłówków żądania (np. ciasteczka czy obsługiwane kodowania znaków) są dostępne przy wykorzystaniu dowolnej metody żądania HTTP

w 100% zgoda,

Sądze, że wszyscy wiedzą o co chodzi, ale z moich doświadczeń wynika, że przyjęło się nazywanie "parametrów" URI (?var=..&..) jako parametry GET.
Co do teorii masz w 100% rację, ale jak już powiedziałem, tak się po prostu mówi,
może znasz inny spoób na określenie tego? happy.gif
Crozin
Chyba tylko w PHP się takie coś przyjęło - właśnie ze względu na błędną nazwę zmiennej $_GET. Inne nazwy? Normalnie jest to nazywane request/URL/query parameter, czyli parametr żądania/URL-a (query już się chyba sensownie nie da przetłumaczyć).
greycoffey
Cytat(Crozin @ 30.07.2012, 19:40:19 ) *
(query już się chyba sensownie nie da przetłumaczyć).


Może query => zapytanie? Przeglądarka odpytuje serwer, aby uzyskać określony zasób.
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.