witam
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 :
  1. <?php
  2. class UserForm extends BaseUserForm
  3. {
  4.  public function configure()
  5.  {
  6.      parent::configure();
  7.    $this->widgetSchema['logo'] = new sfWidgetFormInputFileEditable(array(
  8.      'label'     => 'Company logo',
  9.      'file_src'  => '/uploads/avatar/'.$this->getObject()->getLogo(),
  10.      'is_image'  => true,
  11.      'edit_mode' => !$this->isNew(),
  12.      'template'  => '%file%
  13. %input%
  14. %delete% %delete_label%',
  15.    ));
  16.    
  17.    $this->validatorSchema['logo_delete'] = new sfValidatorBoolean();
  18.  }
  19.  
  20.  protected function removeFields()
  21.  {
  22.    unset(
  23.      $this['created_at'], $this['updated_at']
  24.    );
  25.  }
  26.  
  27.  
  28.   protected function doSave ( $con = null )  
  29.   {  
  30.     $file = $this->getValue('logo');  
  31.     if ( $file )  
  32.     {  
  33.       $filename = sha1($file->getOriginalName()).$file->getExtension($file->getOriginalExtension());  
  34.       $filepath = sfConfig::get('sf_upload_dir').'/avatar/'.$filename;
  35.  
  36.       if ( file_exists($filepath) )  
  37.       {  
  38.         unlink($filepath);  
  39.       }  
  40.       $thumbnail = new sfThumbnail(50, 50);
  41.       $thumbnail->loadFile($file->getTempName());
  42.       $thumbnail->save($filepath);
  43.     }  
  44.  
  45.     return parent::doSave($con);  
  46.   }
  47.  
  48. }
  49. ?>


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 biggrin.gif