Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony]Nie rozumiem obsługi formularzy, nie wiem jak obsłużyć -szukam pomocy
meron11
post
Post #1





Grupa: Zarejestrowani
Postów: 78
Pomógł: 1
Dołączył: 17.08.2009

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


mam formularz:
  1. <form action="<?php echo url_for('tablice/Dodaj')?>" method="post">
  2. <input type="text" name="wartosc" size="10" />
  3. <input type="hidden" name="czesc" value="1" />
  4. <input type="hidden" name="id" value="<?php echo $tablice->getId() ?>" />
  5. </form>

Muszę zapisać to w bazie o takiej strukturze:


Ale kompletnie nie wiem jak...
napisałem narazie tyle:
  1. public function executeDodaj (sfWebRequest $request )
  2. {
  3. $this->forward404Unless($request->isMethod(sfRequest::POST));
  4. $this->form = new trescForm($request);
  5. $this->processForm($request, $this->form);
  6. }

oczywiście nie działa.
Proszę kogoś o napisanie kodu i wytłumaczenie go ,z góry dzięki ,oczywiście tabela tresc skonfigurowana w symfony wink.gif
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 13)
destroyerr
post
Post #2





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

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


Na stronie symfony, jest wszystko wyjaśnione.
Jeśli piszesz, że coś "nie działa" to tak jakbyś nic nie napisał. Nie działanie musi się czymś objawiać. Postaraj się opisać to dokładniej, postaraj się także sprawdzić, czy zmienne na pewno zawierają to co potrzebujesz. Sprawdź też czy w klasie masz dostępną metodę processForm. Najważniejsza rzecz, która się rzuca w oczy: jeśli metoda processForm jest standardowa to formularz masz źle przygotowany. Wyświetl sobie ten generowany przez symfony i porównaj.
Go to the top of the page
+Quote Post
meron11
post
Post #3





Grupa: Zarejestrowani
Postów: 78
Pomógł: 1
Dołączył: 17.08.2009

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


process form nie standardowa jest

nie wiem oc nie działa bo symfony wypluwa że akceptuje tylko obiekt
"The "TrescForm" form only accepts a "Tresc" object."
a processform:
  1. protected function processForm(sfWebRequest $request, sfForm $form)
  2. {
  3. $form->bind(
  4. $request->getParameter($form->getName()),
  5. $request->getFiles($form->getName())
  6. );
  7. if ($form->isValid())
  8. {
  9. $forma = $form->save();
  10.  
  11.  
  12. }
  13.  
  14. }


Czytałem stronę symfony ale nadal nie rozumiem "o co kaman " ;/
Go to the top of the page
+Quote Post
osl
post
Post #4





Grupa: Zarejestrowani
Postów: 260
Pomógł: 41
Dołączył: 6.04.2009
Skąd: Gdańsk/okolice

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


Kod
    $this->form = new trescForm($request);

tutaj szukaj błędu
Go to the top of the page
+Quote Post
meron11
post
Post #5





Grupa: Zarejestrowani
Postów: 78
Pomógł: 1
Dołączył: 17.08.2009

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


Czyli poprostu $reqest nie jest obiektem .... ,to jak go na obiekt przerobić ?
Go to the top of the page
+Quote Post
osl
post
Post #6





Grupa: Zarejestrowani
Postów: 260
Pomógł: 41
Dołączył: 6.04.2009
Skąd: Gdańsk/okolice

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


request jest obiektem, ale nie takim jakiego potrzebujesz w tym przypadku.
tam powinien być obiekt typu "Tresc", który musisz stworzyć lub pobrać z bazy.
Go to the top of the page
+Quote Post
meron11
post
Post #7





Grupa: Zarejestrowani
Postów: 78
Pomógł: 1
Dołączył: 17.08.2009

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


Tworzę nowy rekord czyli stworzyć
  1. $obiekt= new tresc($request);

dobrze myślę?
Go to the top of the page
+Quote Post
osl
post
Post #8





Grupa: Zarejestrowani
Postów: 260
Pomógł: 41
Dołączył: 6.04.2009
Skąd: Gdańsk/okolice

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


nie do końca. tak po prawdzie, przy tworzeniu nowego obiektu nie musisz podawać żadnego argumentu przy tworzeniu formularza, po prostu
Kod
new TrescForm()
Go to the top of the page
+Quote Post
meron11
post
Post #9





Grupa: Zarejestrowani
Postów: 78
Pomógł: 1
Dołączył: 17.08.2009

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


  1. $this->form = new trescForm();
  2. $this->processForm($request, $this->form);


Oczywiście rekordu nie dodaje ;/ i nie mogę nic ciekawego znajeść bo nic nie wypluwa ,tylko że template nie ma ale i tak dodaje przekierowanie i znika ,jeszcze jakiś pomysł?

//niestety nie wysyła nadal do bazy....

Ten post edytował meron11 4.02.2011, 14:18:10
Go to the top of the page
+Quote Post
bikerszymek
post
Post #10





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

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


Uzywaj trybu developerskiego a wszystko stanie sie prostrze, nie tylko dla Ciebie ale dla osob ktore staraja Ci sie pomoc!
Go to the top of the page
+Quote Post
meron11
post
Post #11





Grupa: Zarejestrowani
Postów: 78
Pomógł: 1
Dołączył: 17.08.2009

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


No błysłeś nie pomyślałem ...... ,zawsze używam trybu dev.... tylko że on błedu nie wypluwa i w bazie nadal skrypt nie zapisuje....
Go to the top of the page
+Quote Post
destroyerr
post
Post #12





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

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


No to masz jeszcze logi i zapytania. Posprawdzaj wszystko, wysil się i postaraj się zdiagnozować problem, a wtedy jeśli nie dasz rady sam go rozwiązać to tutaj ktoś Ci pomoże.
Go to the top of the page
+Quote Post
meron11
post
Post #13





Grupa: Zarejestrowani
Postów: 78
Pomógł: 1
Dołączył: 17.08.2009

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


Solucja:
  1. <form action="<?php echo url_for('tablice/Dodaj')?>" method="post"?>
  2. <input type="text" id="tresc_tresc" name="tresc[tresc]" size="10" />
  3. <input type="hidden" id="tresc_czesc" name="tresc[czesc]"value="1" />
  4. <input type="hidden" name="tresc[id]" id="tresc_id" />
  5. <input type="hidden" name="tresc[_csrf_token]" value="43d5751b44f29deab660dadba3a84616" id="tresc__csrf_token" />
  6. <input id="tresc_id_tablicy" type="hidden" name="tresc[id_tablicy]" value="<?php echo $tablice->getId() ?>" />
  7. </form>


Brak pola id...
Go to the top of the page
+Quote Post
bikerszymek
post
Post #14





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

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


Nie wiem jak Ty uzywasz trybu dev skoro nie widziales ze w zakladce view masz info o validacji formularza (taka informacja o braku pola by byla). Po drugie, jeśli Ty tak uzywasz formularzy w szablonach to zacznij jeszcze raz od poczatku czytac dokumentacje.
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 Aktualny czas: 22.08.2025 - 00:52