2010-12-21 5 views
0

Ich bin eine benutzerdefinierte Datei-Validator für eine Datei Eingabefeld in Symfony 1.4 (Lehre) wollen Einstellung

$this->setValidator('filename', new sfValidatorFile(array(

'mime_types' => 'web_images', 
'path' => sfConfig::get('sf_upload_dir').'/animals', 
'validated_file_class' => 'CustomValidatedFile', 
'required' =>false 
))); 

ich dann die Save-Methode außer Kraft zu setzen einige Thumbnails zu generieren:

class CustomValidatedFile extends sfValidatedFile { 

private $savedFilename; 

// Override sfValidatedFile's save method 
    public function save($file = null, $fileMode = 0666, $create = true, $dirMode = 0777)     { 

$this->savedFilename = $this->generateFilename(); 
// This makes sure we use only one savedFilename (it will be the first) 
if ($this->savedFilename === null) { 

$this->savedFilename = $file; 
} 

$thumbnail = new sfThumbnail(150,150); 
$thumbnail->loadFile($this->getTempName()); 
$thumbnail->save(sfConfig::get('sf_upload_dir').'/thumbnails/thumb_'.$this->savedFilename); 
// Let the original save method do its magic :) 

return parent::save($this->savedFilename, $fileMode, $create, $dirMode); 
    } 
    } 

Diese mit versagt Der Fehler "Die Datei" "ist nicht lesbar." Dies kommt von sfThumbnailPlugin, weil der Wert von $ file null ist.

Meine Frage ist warum ist $ file null?

+0

Ich denke, seine weil $ file existiert noch nicht - Zu diesem Zeitpunkt existiert nur eine temporäre Datei, auf die über $ this-> getTempName() zugegriffen werden kann. – codecowboy

+0

Und $ file ist eigentlich nur ein Dateiname, keine gespeicherte Datei. – codecowboy

+0

Ich habe Ihre Frage erneut geschrieben, um die Chancen zu verbessern, dass die richtigen Leute bemerkt werden. Rollback ist sinnlos und kontraproduktiv. – skaffman

Antwort

0

Ich denke, seine weil $ file existiert noch nicht - nur eine temporäre Datei existiert in diesem Stadium die this- über $ zugegriffen werden kann> getTempName()