Gdy stosuję sfWidgetFormInputFile to problem jest ten sam, a mianowicie:
Plik ładuje się we wskazane miejsce.
Nie ma wpisu w bazie.
Dam głowę, że to co zrobiłem w pliku lib/form/FilmForm.class.php, w metodzie configure() jest prawidłowe oraz dam głowę, że druga metoda, którą dodałem w tej klasie jest albo błędna albo powinna być w innym miejscu.
Ale pół nocy przekopywałem net i nie trafiłem na czytelny przykład. Niestety nie jestem jeszcze na tyle biegły w 1.2 żeby bez problemów dostosowywać wszystko do Generatora... Proszę was o wskazówkę, gdzie powinienem wrzucić obsługę ładowanego pliku, jaka to powinna być metoda i czy wnętrze mojej będzie działać?
lib/form/FilmForm.class.php:
<?php public function configure() { 'label' => 'Plakat', 'file_src' => '/uploads/plakaty/'.$this->getObject()->getPlakat(), 'delete_label' => 'Usuń ten plik', 'is_image' => true, 'edit_mode' => !$this->isNew(), )); //$this->widgetSchema['plakat'] = new sfWidgetFormInputFile(); $this->validatorSchema['plakat'] = new sfValidatorFile(); } public function updateObject($values = null) { $object = parent::updateObject(); $file = $this->getValue('plakat'); $filename = 'uploaded_'.sha1($file->getOriginalName()); $extension = $file->getExtension($file->getOriginalExtension()); $file->save(sfConfig::get('sf_upload_dir').'/plakaty/'.$filename.$extension); } ?>
---------------- UPDATE ---------------------
Poczyniłem pewne postępy, zmodyfikowałem updateObject() i teraz plik ładuje się na serwer a do bazy jest wstawiana jego nazwa. Niestety z całą bezwzględną ścieżką do pliku. Więc moje pytania są teraz następujące:
1. Czy miejsce, w którym umieściłem updateObject() jest właściwe (lib/form/FilmForm.class.php)
2. Czy to powinna być metoda updateObject()? Czemu nie save() jak np. tu: http://www.symfony-project.org/forms/1_2/e...the_save_method
3. W jaki sposób zapisać do bazy tylko nazwę pliku, bez ścieżki bezwzględnej z komputera, z którego pochodzi plik?
Obecnie kod metody updateObject() wygląda tak:
<?php public function updateObject($values = null) { { } $file = $this->getValue('plakat'); $filename = 'uploaded_'.sha1($file->getOriginalName()); $extension = $file->getExtension($file->getOriginalExtension()); $file->save(sfConfig::get('sf_upload_dir').'/plakaty/'.$filename.$extension); return parent::updateObject(); } ?>
?>[/php]