0

我是 Symfony 的新手,上传文件时遇到问题

我只是不让它工作,而且我找不到能告诉我确切如何使用它或告诉我它是如何工作的东西(我已阅读 smyfony 官方文档)

这是我的代码:

表格

class PagosForm extends BasePagosForm
{
  public function configure()
  {
    $this->setWidgets(array('file' => new sfWidgetFormInputFile()));

    $this->widgetSchema->setNameFormat('pagos[%s]');

    $this->setValidators(array('file' => new sfValidatorFile(array(
        'required'   => false
        ))));
  }
}

行动

public function executeSelect(sfWebRequest $request)
  {
     $this->form = new PagosForm();
  }

 public function executeUpload(sfWebRequest $request)
  {

    $this->form = new PagosForm();

    if ($request->isMethod('post'))
    {
      $this->form->bind($request->getParameter($this->form->getName()), $request->getFiles($this->form->getName()));

      if ($this->form->isValid())
      {
        echo "isvalid";
        move_uploaded_file($_FILES["file"]["tmp_name"], sfConfig::get('sf_upload_dir').'/'.$_FILES["file"]["name"]);
      }
      else 
      {  
        echo "isinvalid";
        //echo var_dump($this->form);
      }
    }
  }

在选择中,输出了一个用于选择文件并提交的按钮:这将我们带到操作上传。

选择成功.php

<?php echo form_tag('pagos/upload', 'enctype="multipart/form-data"', 'method="POST"') ?>
<?php echo $form['file'] ?>
<?php echo submit_tag('Send') ?>

我在使用 eclipse 时遇到了一些问题,所以我使用 Sublime text 2(文本编辑器)进行编码,所以我很难找到错误。

我之所以使用它move_uploaded_file是因为由于某种原因,我无法让它发挥 symfony 上传文件的功能。这样我就可以搞定了,但是如果我想加一些验证(比如只允许上传excel文件),就搞不定了。。

我总是打印“isinvalid”行,除非我删除了设置验证器的表单中的行。因此,由于某种原因,验证器无法正常工作..

我也尝试创建自定义验证器,扩展 sfValidatorFile,但根本不起作用(我什至无法上传任何文件或呈现页面)

所以,在我的脑袋爆炸之前,我需要一点帮助(由 symfony 引起:P)

代码有什么问题,我总是得到无效文件?我正在尝试上传一个 3 KB 的简单 .txt,如果我删除了验证,我可以正常上传

4

1 回答 1

2

由于没有人回答这个问题,我会自己说:

我需要用来<?php echo $form->renderHiddenFields() ?>渲染 _csrf_token 字段(和其他隐藏的输入)。

有了这个,验证已经通过

于 2013-04-05T13:06:53.550 回答