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:
<?php
class rejestracjaActions extends sfActions
{
/**
* Executes index action
*
* @param sfRequest $request A request object
*/
public function executeIndex(sfWebRequest $request)
{
$this->form=new RejestracjaForm();
if ($request->isMethod('post')) {
$this->form->bind($request->getParameter('uzytkownicy'), $request->getFiles('uzytkownicy'));
if ($this->form->isValid()) {
try {
$file = $this->form->getValue('awatar');
$filename = 'uploaded_'.sha1($file->getOriginalName());
$extension = $file->getExtension($file->getOriginalExtension());
$file->save(sfConfig::get('sf_upload_dir').'/'.$filename.$extension);
$this->form->save();
$this->redirect('rejestracja/dziekujemy');
} catch (PropelException $e) {
$this->redirect('rejestracja/blad');
}}
}
}
?>
<?php
class RejestracjaForm extends BaseUzytkownicyForm {
public function configure() {
unset($this['usuniety'],$this['miasto'],$this['osobie'], $this['usid'],$this['created_at'],$this['updated_at']
);
$this->setWidget('powtorz',new sfWidgetFormInputPassword());
$this->setValidator('powtorz',new sfValidatorString
(array('max_length' => 45, 'required' => true))); $this->widgetSchema->moveField('powtorz',sfWidgetFormSchema::AFTER,'haslo');
$this->widgetSchema->setFormFormatterName('list');
$this->validatorSchema->setPostValidator(new sfValidatorAnd
(array( new sfValidatorSchemaCompare('haslo', '==', 'powtorz',
array('invalid' => 'Hasło "%left_field%" Nie zgadza się z "%right_field%"') ),
new sfValidatorPropelUnique
(array('model' => 'Uzytkownicy', 'column' => array('login')),array('invalid' => 'Login %value% już istnieje') ))
));
}
}
?>