Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony] jak dołączyć formularz na stronę ?
Forum PHP.pl > Forum > PHP > Frameworki
nieraczek
Jak wyświetlić na stronie formularz, bo pojawia mi się błąd ?

W actions.class.php mam:
  1. <?php
  2. public function executeStronka(sfWebRequest $request)
  3.  {
  4.    $this->form = new FormularzJedenForm();
  5.  }
  6. ?>


W stronkaSuccess.php mam:
  1. <div id="job">
  2.  
  3. Formularz:
  4. <?php
  5. include_partial('lib/form/FormularzJeden')
  6. ?>
  7.  
  8. </div>


Nie bardzo rozumiem funkcji include_partial(), co mam w nią wpisać ? Dołącza ona zawartość pliku, ale jakoś nie do końca rozumiem, bo często ma jeszcze tablice array().


Poza tym mam jeszcze plik FormularzJedenForm.class.php - umieściłem go w katalogu sf_sandbox\lib\form - jest to chyba właściwe miejsce, bo są tu umieszczone formularze automatycznie wygenerowane przez Symfony.
  1. <?php
  2. class FormularzJedenForm extends sfForm
  3. {
  4.  public function configure()
  5.  {
  6.      $this->setWidgets(array(
  7.      'email'   => new sfWidgetFormInput(),
  8.      'message' => new sfWidgetFormTextarea(),
  9.    ));
  10.  
  11.    $this->setValidators(array(
  12.      'email'   => new sfValidatorEmail(),
  13.      'message' => new sfValidatorString(array('max_length' => 255)),
  14.    ));
  15.  
  16.  }
  17. }
  18. ?>
phpion
Dawno nie korzystałem z Symfony ale czy przypadkiem nie wystarczy:
  1. <div id="job">
  2.  
  3. Formularz:
  4. <?= $form ?>
  5.  
  6. </div>
nieraczek
No niestety, ale to nie działa. W tutorialu na stronie symfony używają do tego include_partial() - niestety ja jeszcze zbytnio tego nie rozumiem i nie wiem jak to w moim przypadku wykorzystać. tongue.gif

PS. Robię trochę inaczej niż jest w tutorialu.
destroyerr
phpion ma rację, tak wystarczy. Oczywiście są inne sposoby wyświetlania formularza.
Twoja próba jest totalnie bezsensowna, jestem ciekawy skąd to wytrzasnąłeś.
include_partial służy do ładowania szablonów, więc stosujesz tą funkcje bezmyślnie. Zajrzyj do książki tam masz opisane do czego to służy. Osobny dział dokumentacji jest poświęcony formularzom. Tam też zajrzyj, warto.

Reszta wydaje się być poprawna, oczywiście to gdzie umieścisz plik z formularze, to w zasadzie dla sf jest obojętne. Na razie trzymaj tam gdzie teraz a z czasem, ale powiem Ci, że jak będzie lib/jakis_fajny_katalog to też będzie dobrze.
nieraczek
Znalazłem opis tworzenia i wyświetlania formularza na stronie symfony (w tutorialu tego nie było). Tylko ja chciałbym wstawić formularz na stronę a nie wyświetlać go samego.
W konsoli wydałem polecenie:
php symfony generate:module fronted formularz1

I teraz mam w frontend/modules folder formularz1 a w nim:
actions/actions.class.php:
  1. <?php
  2. class formularz1Actions extends sfActions
  3. {
  4. /**
  5.   * Executes index action
  6.   *
  7.   * @param sfRequest $request A request object
  8.   */
  9.  public function executeIndex(sfWebRequest $request)
  10.  {
  11.    $this->forward('default', 'module');
  12.  }
  13. }
  14. ?>


oraz templates/indexSuccess.php gdzie dodałem to co pisaliście:
  1. <?php echo $form ?>



Natomiast w frontend/modules w folderze job/actions w actions.class.php funkcje:
  1. <?php
  2. public function executeStronka(sfWebRequest $request)
  3.  {
  4.    
  5.  }
  6. ?>


W frontend/modules w folderze job/templates w stronkaSuccess.php mam:
  1. <?php
  2. Formularz:
  3. ?>


i na tej stronie chciałbym wyświetlić formularz formularz1 - jak to zrobić ?
phpion
Może zapoznaj się z odpowiednimi materiałami dotyczącymi formularzy:
http://www.symfony-project.org/book/forms/1_2/en/
a nie działaj po omacku.
nieraczek
Udało mi się zrobić formularz wg podanej przez Ciebie strony - jednak wyświetla się on na stronie:
http://localhost:81/formularz


A ja chciałbym go na stronie: http://localhost:81/job/formularz

Czy taki formularz da się w ogóle zrobić ręcznie bez użycia konsoli ? Bo mi za każdym razem wyświetla się biała strona zamiast formularza ?

sf_sandbox\apps\frontend\modules\job\actions\action.class.php:
  1. <?php
  2. public function executeFormularz(sfWebRequest $request)
  3.  {
  4.      $this->form = new Formularz2Form();
  5.  }
  6. ?>


sf_sandbox\apps\frontend\modules\job\templates\FormularzSuccess.php:
  1. <?php echo $form ?>


sf_sandbox\lib\form\Formularz2Form.class.php:
  1. <?php
  2. class Formularz2Form extends sfForm
  3. {
  4.  public function configure()
  5.  {
  6.  
  7.  $this->setWidgets(array(
  8.      'email'   => new sfWidgetFormInput(),
  9.      'message' => new sfWidgetFormTextarea(),
  10.    ));
  11.  
  12.    $this->setValidators(array(
  13.      'email'   => new sfValidatorEmail(),
  14.      'message' => new sfValidatorString(array('max_length' => 255)),
  15.    ));
  16.    
  17.  }
  18. }
  19. ?>


I zawsze jak wchodzę na http://localhost:81/job/formularz to widzę białą stronę. Natomiast formularz wykonany przy użyciu konsoli działa na http://localhost:81/formularz.

A jak zakomentuję
  1. <?php
  2. $this->form = new Formularz2Form();
  3. ?>
to widzę na stronie button.
phpion
Cytat(nieraczek @ 7.02.2009, 16:25:36 ) *
Udało mi się zrobić formularz wg podanej przez Ciebie strony - jednak wyświetla się on na stronie:
http://localhost:81/formularz
A ja chciałbym go na stronie: http://localhost:81/job/formularz

No to może umieść go w kontrolerze Job? Kurde, ja naprawdę nie wiem z czego ty robisz problemy. Brak ci kompletnych podstaw Symfony - weź się porządnie za naukę, a nie skacz od razu po formularzach.
nieraczek
No tak - teraz jest ok, dziękuję smile.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.