Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony]Nie rozumiem obsługi formularzy
Forum PHP.pl > Forum > PHP > Frameworki
meron11
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
destroyerr
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.
meron11
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 " ;/
osl
Kod
    $this->form = new trescForm($request);

tutaj szukaj błędu
meron11
Czyli poprostu $reqest nie jest obiektem .... ,to jak go na obiekt przerobić ?
osl
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.
meron11
Tworzę nowy rekord czyli stworzyć
  1. $obiekt= new tresc($request);

dobrze myślę?
osl
nie do końca. tak po prawdzie, przy tworzeniu nowego obiektu nie musisz podawać żadnego argumentu przy tworzeniu formularza, po prostu
Kod
new TrescForm()
meron11
  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....
bikerszymek
Uzywaj trybu developerskiego a wszystko stanie sie prostrze, nie tylko dla Ciebie ale dla osob ktore staraja Ci sie pomoc!
meron11
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....
destroyerr
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.
meron11
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...
bikerszymek
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.
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.