Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony]sfWidgetFormInputFile()
Gribo
post
Post #1





Grupa: Zarejestrowani
Postów: 237
Pomógł: 17
Dołączył: 1.11.2007
Skąd: Zielona Góra

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


Witam mam formularz który działa dobrze ale jest jeden szczegół, który mnie irytuje.
Otóż gdy podczas wypełniana formularza zrobię jakiś błąd (zaznaczam że jedno z pól to sfWidgetFormInputFile()) to Formularz dobrze się zwaliduje jednak wczytana wcześniej ścieżka do pliku który wczytałem do pola sfWidgetFormInputFile(), nie powróciła mimo że błąd był w innym polu. Przez to muszę wyszukiwać pliku graficznego od nowa na dysku i go wczytywać. Czy to jest jakiś bug? czy coś źle robię oto kody:

  1. <?php
  2. class rejestracjaActions 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->form=new RejestracjaForm();
  12.      if ($request->isMethod('post')) {
  13.           $this->form->bind($request->getParameter('uzytkownicy'), $request->getFiles('uzytkownicy'));
  14.  
  15.           if ($this->form->isValid()) {
  16.               try {
  17.                  $file = $this->form->getValue('awatar');
  18.                  $filename = 'uploaded_'.sha1($file->getOriginalName());
  19.                  $extension = $file->getExtension($file->getOriginalExtension());
  20.                  $file->save(sfConfig::get('sf_upload_dir').'/'.$filename.$extension);
  21.                  $this->form->save();
  22.                  $this->redirect('rejestracja/dziekujemy');
  23.           } catch (PropelException $e) {
  24.               $this->redirect('rejestracja/blad');
  25.           }}
  26.          
  27.          }
  28.  }
  29. ?>


  1. <?php
  2. class RejestracjaForm extends BaseUzytkownicyForm {
  3.    public function configure() {
  4.      
  5.        unset($this['usuniety'],$this['miasto'],$this['osobie'],
  6.                $this['usid'],$this['created_at'],$this['updated_at']
  7.        );
  8.    
  9.      
  10.       $this->setWidget('powtorz',new sfWidgetFormInputPassword());
  11.       $this->setValidator('powtorz',new sfValidatorString(array('max_length' => 45, 'required' => true)));
  12.       $this->widgetSchema->moveField('powtorz',sfWidgetFormSchema::AFTER,'haslo');
  13.      
  14.      
  15.       $this->widgetSchema->setFormFormatterName('list');
  16.      
  17.  $this->validatorSchema->setPostValidator(new sfValidatorAnd(array(
  18.      new sfValidatorSchemaCompare('haslo', '==', 'powtorz',
  19.            array(),
  20.            array('invalid' => 'Hasło "%left_field%" Nie zgadza się z "%right_field%"')
  21.          ),
  22.      new sfValidatorPropelUnique(array('model' => 'Uzytkownicy', 'column' => array('login')),array('invalid' => 'Login %value% już istnieje')
  23.          ))
  24.        ));
  25.  
  26.  
  27.       }
  28. }
  29. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
krowal
post
Post #2





Grupa: Zarejestrowani
Postów: 561
Pomógł: 72
Dołączył: 15.11.2006

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


Aa <input type=file> nie da się nadać wartości (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Jest tak zrobione ze względu na bezpieczeństwo. Wyobraź sobie sytuację gdzie w formularzu znajduje się pole typu file którego nie widać a ty nadasz mu automatycznie wartość np. ścieżkę do jakiegokolwiek pliku na dysku użytkownika oglądającego stronę. Jeśli użytkownik kliknie submit to plik automatycznie zostanie przesłany, może to być np lista użytkowników gg która znajduje się prawie zawsze w tym samym miejscu itp.

edit: Trochę nie chciało mi się czytać i poprzednio dałem taką odpowiedź, ale nic Ci to nie pomoże (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował krowal 9.07.2009, 08:42:48
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 12.10.2025 - 10:03