【问题标题】:Symfony image uploadSymfony 图片上传
【发布时间】:2013-01-09 18:48:16
【问题描述】:

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

这是我的代码:

表格:

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

【问题讨论】:

    标签: php symfony-1.4


    【解决方案1】:

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

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

    if ($this->form->isValid())
    {
      $this->form->save();
    
      $this->redirect('galeria/index');
    }
    

    看看文档,你会发现很多信息,特别是the part of Jobeet tutorial about Form

    【讨论】:

    • 它是sfForm 所以它没有保存方法
    猜你喜欢
    • 1970-01-01
    • 2019-01-06
    • 2016-11-22
    • 2021-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-15
    • 2015-05-18
    相关资源
    最近更新 更多