2

我找不到我的代码无法正常工作的原因。我尝试通过表单上传图像并将其保存在目录中,但它不存在。对于测试,我从表单中对文件对象进行了回显,以显示文件名和扩展名及其正确,但不保存。

这是我的代码:

形式:

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');
    }
  }
}
4

1 回答 1

0

当您使用或在您的情况下,该path参数会更好。sfConfig::get('sf_upload_dir')sfConfig::get('sf_web_dir')

您不需要操作中save()的小部件。您只需要保存表单,然后它将保存您的图像。

if ($this->form->isValid())
{
  $this->form->save();

  $this->redirect('galeria/index');
}

看一下文档,你会发现很多信息,特别是 Jobeet 教程中关于 Form 的部分

于 2013-01-10T08:34:15.150 回答