使用symfony上传和文件验证

时间:2013-04-03 19:37:16

标签: php file-upload symfony-1.4

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

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

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”行,除了我删除了设置验证器的表单中的行。因此,由于某种原因,验证器不起作用..

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

有了这个,验证已经过了

相关问题