我在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,我可以正常上传
答案 0 :(得分:2)
由于没有人回答这个问题,我会自己说出来:
我需要使用<?php echo $form->renderHiddenFields() ?>
来渲染_csrf_token字段(和其他隐藏的输入)。
有了这个,验证已经过了