|Dynamic folder in sfWidgetFormInputFileEditable [message #80771]
||Fri, 26 June 2009 21:29
Registered: June 2009
I have the following problem : I want to be able to have an editable image in my backend form for an element called Horse. This element has a field "Image" that contains the name of the image and that image has to be stored in "uploads/images/pferde/%name_slug%/" where %name_slug% is a slugified value of the field "Name".|
Now below you have my BackendKdHorseForm with the widgetSchema and validatorSchema for the field "Image". It works perfectly fine as long as I am editing a Horse, but when I try to creat a new one it uploads the image into "uploads/images/pferde/" instead of "uploads/images/pferde/%name_slug%". Now I am guessing that in the creation process the validatorSchema for "Image is unable to find a value for $this->getObject()->getNameSlug() and thats why my image ends up in "uploads/images/pferde/", my question is how can I modify this validatorSchema in order for the creation process to upload the image in the right place.
Just for information I did try to use Kd::slugify($this->getValue ('name')) instead of $this->getObject()->getNameSlug() but it still didn't work...
class BackendKdHorseForm extends KdHorseForm
public function configure()
$this->widgetSchema['image'] = new sfWidgetFormInputFileEditable(array(
'label' => 'Bild',
'file_src' => '/uploads/images/pferde/'.$this->getObject()->getNameSlug().'/'.$this->getObject()->getImage(),
'is_image' => true,
'edit_mode' => !$this->isNew(),
'template' => '<table class="null"><tr><td colspan="2">%file%</td></tr><tr><td colspan="2">%input%</td></tr><tr><td>%delete%</td><td>%delete_label%</td></tr></table>',
$this->validatorSchema['image'] = new sfValidatorFile(array(
'required' => false,
'path' => sfConfig::get('sf_upload_dir').'/images/pferde/'.$this->getObject()->getNameSlug(),
'mime_types' => 'web_images',
'validated_file_class' => 'sfValidatedFileOriginalName'
$this->validatorSchema['image_delete'] = new sfValidatorPass();
[Updated on: Fri, 26 June 2009 21:29]