chce zrobić by zdjęcie uploadowanie przez użytkownika było przed zapisem zmniejszane do podanych rozmiarów, korzystam przy tym z sfThumbnail. Problem w tym że jak już zdjęcie jest zapisane na dysku to w bazie nie ma zapisanej nazwy tego pliku. Jest po prostu puste pole.
oto kod :
<?php class UserForm extends BaseUserForm { public function configure() { parent::configure(); 'label' => 'Company logo', 'file_src' => '/uploads/avatar/'.$this->getObject()->getLogo(), 'is_image' => true, 'edit_mode' => !$this->isNew(), 'template' => '%file% %input% %delete% %delete_label%', )); $this->validatorSchema['logo_delete'] = new sfValidatorBoolean(); } protected function removeFields() { $this['created_at'], $this['updated_at'] ); } protected function doSave ( $con = null ) { $file = $this->getValue('logo'); if ( $file ) { $filename = sha1($file->getOriginalName()).$file->getExtension($file->getOriginalExtension()); $filepath = sfConfig::get('sf_upload_dir').'/avatar/'.$filename; { } $thumbnail = new sfThumbnail(50, 50); $thumbnail->loadFile($file->getTempName()); $thumbnail->save($filepath); } return parent::doSave($con); } } ?>
przypuszczam że to wina walidatora
'logo'=> new sfValidatorFile(array('max_size'=>100000,'mime_types'=>'web_images', 'required'=> false))
bo jak wypełnię opcje 'path' i wpisze jakąś ścieżkę to zdjęcie jest uploadowane podwójnie tj. zmniejszone i w oryginalnym rozmiarze i nazwa pliku jest zapisywana. Macie jakiś sposób na to ?
Problem rozwiązany. Dla wszystkich którzy beda mieć problem z tym wystarczy w validated_file_class podać swoją klase w której nadpisujemy metode save z sfValidatedFile i po kłopocie
