Если вы используете загрузку файлов, ваша форма обязательно использует sfValidatorFile (если нет, то это неправильно):
$this->validatorSchema['image'] = new sfValidatorFile(array(
'required' => true,
'mime_types' => 'web_images',
));
Этот валидатор возвращает экземпляр sfValidatedFile, который можно сохранить в любом месте (это безопаснее)чем move_uploaded_file, есть проверка на каталог, имя файла ...).
В вашем действии (или в форме, как вы хотите / нуждаетесь), теперь вы можете сделать это:
protected function processForm(sfWebRequest $request, sfForm $form)
{
$form->bind(
$request->getParameter($form->getName()),
$request->getFiles($form->getName())
);
if ($form->isValid())
{
$job = $form->save();
// Saving the file to filesystem
$file = $form->getValue('my_upload_field');
$file->save('/path/to/save/'.$job->getId().'/myimage.'.$file->getExtension());
$this->redirect('job_show', $job);
}
}
Не стесняйтесь открыть sfValidatedFile, чтобы посмотреть, как он работает.