Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony] walidacja sfWidgetFormInputFileEditable
Forum PHP.pl > Forum > PHP > Frameworki
Foxx
Symfony 1.2 admin generator

Mam następujący problem z sfWidgetFormInputFileEditable:
Gdy edytuję rekord, np. kino, ale nie załaduję loga kina to walidator mnie zatrzymuje - super bo to pole jest required.
Ale gdy już załaduję ikonę i zmieniam np. nazwę kina to walidator nadal mnie zatrzymuje - jakby nie wie, że plik już jest.

Myślę, że to może mieć związek z moim parametrem "file_src" widgeta bo nie udało mi się ustawić ścieżki, która by działała (i wyświetlała thumb obok inputa) i musiałem zrobić tak trochę na chama, tymczasowo.
Jeżeli sfWidgetFormInputFileEditable czerpie wiedzę o załadowanym pliku przy pomocy tej ścieżki, to to może być przyczyna.

Więc ostatecznie mam dwa pytania: jak przejść tą walidację (tymczasowo ustawiłem walidator "required => false") oraz jak powinna wyglądać prawidłowa ścieżka file_src.

Oto mój kod:
  1. <?php
  2. public function configure()
  3. {
  4.  $this->widgetSchema['logo'] = new sfWidgetFormInputFileEditable(array(
  5.    'file_src'  => '../../../uploads/loga_kin/'.$this->getObject()->getLogo(),
  6.     'with_delete' => true,'
  7.     'delete_label' => 'Zaznacz aby usunąć to logo',
  8.     'is_image'  => true,
  9.     'edit_mode' => !$this->isNew(),
  10.     'template'    => '<div><table><tr><td>%file%</td><td> %input% </td></tr><tr><td colspan="2"> %delete% %delete_label%</td></tr></table></div>',
  11.  ));
  12.      
  13.  $this->validatorSchema['logo'] = new sfValidatorFile(array(
  14.    'required'  => false,
  15.    'path'  => sfConfig::get('sf_upload_dir').'/loga_kin/',
  16.  ));
  17.        
  18.  $this->validatorSchema['logo_delete] = new sfValidatorPass();
  19. }
  20. ?>
destroyerr
Ścieżka powinna wyglądać tak:
  1. <?php
  2. '/uploads/loga_kin/'.$this->getObject()->getLogo()
  3. ?>

Przynajmniej u mnie daje właściwe efekty.

Co do walidacji, to nie mam pewności (a sprawdzać też mi się teraz nie chce) ale Twoja teoria się nie sprawdzi. Spróbuj tak:
  1. <?php
  2. 'required' => !$this->getObject()->getLogo()
  3. ?>
Foxx
Jesteś wielki aarambo.gif
Nie wiem czemu ta ścieżka nie działa mi tak jak u Ciebie, może na serwerze produkcyjnym będzie normalnie.
Dzięki za pomoc (po raz kolejny).
destroyerr
Ta ścieżka to ma być poprostu ścieżka do obrazka, tak samo jak na stronie podajesz adres do image_tag lub bezpośrednio do <img />. Więc może nie działa dlatego, że masz problem z konfiguracją.
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.