Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony] problem z sfForm bind
Forum PHP.pl > Forum > PHP > Frameworki
Mgorka
Witajcie uczę się tworzenia formularzy w symfony 1.4 według poradnika ze strony symfony i mam problem z funkcją bind otrzymuję error Call to a member function bind() on a non-object in
Co go może wywoływać
  1. class kontaktActions extends sfActions
  2. {
  3. /**
  4.   * Executes index action
  5.   *
  6.   * @param sfRequest $request A request object
  7.   */
  8. public function executeIndex(sfWebRequest $request)
  9. {
  10. $this->form = new KontaktForm();
  11. }
  12. public function executeSend(sfWebRequest $request)
  13. {
  14. if ($request->isMethod('post'))
  15. {
  16. $this->form->bind($request->getParameter('kontakt'));
  17. if ($this->form->isValid())
  18. {
  19. $this->redirect('kontakt/index?'.http_build_query($this->form->getValues()));
  20. }
  21. }
  22.  
  23. }
  24.  
  25. }
destroyerr
Błąd nie dotyczy symfony a raczej php, tudzież jego nieznajomości. Odwołujesz się do właściwości form ale do tej właściwości nic nie jest przypisane (a z pewnością nie obiekt). Błąd informuje Cię zresztą o tym. Musiałbyś wcześniej wywołać metodę executeIndex, oczywiście w obrębie tego same żądania.
jaro87
hehe Destroyerr, napisałeś to tak, że musiałem 2 razy przeczytać zanim zrozumiałem;p

Magorka, żeby użyć obiektu jakiejś klasy(formularz to właśnie obiekt) musisz go stworzyć używając słowa kluczowego 'new'. Tworzysz taki obiekt ale w akcji 'index' a powinieneś to raczej zrobić w akcji 'send' bo tam go używasz.

Najpierw to http://pl.wikibooks.org/wiki/PHP/Klasy_i_obiekty a potem dopiero tutorial Symfony;)
Mgorka
spoko zrzumiałem swój bład no ale mam mamły problem zrobiłem jeden formularz z dodawaniem fotek no i ok działą super przeszedłem do inego modułu i tam też wstawiam formularz do uploadu no i mam problem bo valid pokazuje mi że pole do uploadu przesyła warotść pustą;/ i formularz zwraca mi że pole plik jest puste może ktoś widzi mój błąd
  1. public function executeOferta(sfWebRequest $request)
  2. {
  3. $this->form = new OfertaForm();
  4. //sprawdzanie poprawnosci wysłania
  5. if ($request->isMethod('post'))
  6. {
  7. $this->form->bind($request->getParameter('oferta'), $request->getFiles('oferta'));
  8. if ($this->form->isValid())
  9. {
  10. $file = $this->form->getValue('file');
  11.  
  12. $filename = '1';
  13. $extension = $file->getExtension($file->getOriginalExtension());
  14. $file->save(sfConfig::get('app_upload_oferta_dir').'/'.$filename.$extension);
  15.  
  16. $this->redirect('oferta/addOferta?'.http_build_query($this->form->getValues()));
  17. }
  18. }
  19. }

Formularz
  1. <?php
  2.  
  3. class OfertaForm extends BaseForm
  4. {
  5.  
  6.  
  7. public function configure()
  8. {
  9. $this->setWidgets(array(
  10. 'tresc' => new sfWidgetFormTextarea(),
  11. 'file' => new sfWidgetFormInputFile(),
  12. ));
  13. // $this->setDefaults(array('email' => 'Your Email Here', 'name' => 'Your Name Here'));
  14. $this->widgetSchema->setNameFormat('oferta[%s]');
  15. $this->setValidators(array(
  16. 'tresc' => new sfValidatorString(array('min_length' => 4), array('required' => 'The message field is required.')),
  17. 'file' => new sfValidatorFile(),
  18. ));
  19. }
  20. }
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.