我无法找到为什么我的代码无法正常工作。我尝试通过表单上传图像并将其保存在目录中,但它不存在。对于测试我在表单上回显了文件对象,以显示文件名和扩展名及其正确,但不保存。
这是我的代码:
形式:
class WgrajForm extends sfForm
{
public function configure()
{
$this->setWidgets(array(
'zdjęcie' => new sfWidgetFormInputFile(),
'nazwa' => new sfWidgetFormInput(),
));
$this->setValidators(array(
'zdjęcie' => new sfValidatorFile(array(
'mime_types' => 'web_images',
'path' => '/projektSymfony/web/images',
),array(
'mime_types' => 'Plik może być tylko zdjęciem'
)
),
'nazwa' => new sfValidatorString(array(), array('required' => 'pole wymagane')),
));
$this->getWidgetSchema()->setNameFormat('wgraj[%s]');
}
}
动作:
public function executeDodaj(sfWebRequest $request)
{
$this->form= new WgrajForm();
if ($request->isMethod('post'))
{
$this->form->bind(
$request->getParameter('wgraj'),
$request->getFiles('wgraj'));
if ($this->form->isValid())
{
$wgrane = $this->form->getValues();
$plik = $wgrane['zdjęcie'];
$pliknazwa = $wgrane['nazwa'];
$rozszerzenie = $plik->getExtension($plik->getOriginalExtension());
$plik->save('/projektSymfony/web/images/'.$pliknazwa.$rozszerzenie);
//$this->redirect('galeria/index');
}
}
}
答案 0 :(得分:0)
在您的案例中使用path
或sfConfig::get('sf_upload_dir')
时,sfConfig::get('sf_web_dir')
参数会更好。
您的行动中不需要save()
小部件。您只需要保存表单,然后它就会保存您的图像。
if ($this->form->isValid())
{
$this->form->save();
$this->redirect('galeria/index');
}
看一下文档,你会发现很多信息,特别是the part of Jobeet tutorial about Form。