Para que te funcione, una vez creados los widgets y validadores
normalmente, tienes que sobrescribir función updateObject
Una opción es sobrescribiendo la función updateObject del formulario y
otra es creando una clase que extienda de sfValidatedFile y
sobrescribiendo la función generateFilename, y asignando esa clase al
validador en las opciones
Sería algo similar a esto:
public function updateObject($values = null)
{
$object = parent::updateObject();
$this->updateRuta();
return $object;
}
protected function updateArchivoCssEspecifico()
{
// tenemos que sobrescribir el campo y añadir el archivo ya que
los archivos los guarda con extension txt
$path = sfConfig::get('sf_upload_dir');
$file = $this->getValue('ruta');
if(!empty($file))
{
// borramos el archivo creado por el validador
if (file_exists($path.'/'.$this->getObject()->getRuta()))
{
@unlink($path.'//'.$this->getObject()->getRuta());
}
if ('.csv' !== $file->getOriginalExtension())
{
throw new LogicException('Solo se permiten extensiones csv');
}
// guardamos el archivo y actualizamos el objeto
$filename = sha1($file->getOriginalName()).$file-
>getOriginalExtension();
$file->save($path.'/'.$filename);
$this->object->setRuta($filename);
$this->object->save();