上传和文件验证symfony


uploading and file validation with symfony

我是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);
      }
    }
  }

在select中,输出一个选择文件并提交的按钮:它把我们带到动作Upload.

selectSuccess.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"打印,除非我删除了设置validator的行。因此,由于某种原因,验证器不能工作。

我也尝试过创建我的自定义验证器,扩展sfValidatorFile,但根本不工作(我甚至不能上传任何文件或渲染页面)

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

什么是错误的代码,我总是得到无效文件?我上传的是一个简单的。txt文件大小为3kb,如果去掉验证,就可以正常上传了

既然没有人回答这个问题,我就自己说:

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

这样,验证就通过了