使用symfony 1.4中的表单在post验证器中获取文件值

时间:2015-01-29 21:00:30

标签: forms validation symfony-1.4

如果你选择了一个选项,我有一个你可以上传文件的表单,如果用户没有上传文件并且还没有上传文件,我正在尝试使用postValidator抛出错误

在Form Class中我有postValidator

$this->validatorSchema->setPostValidator(
  new sfValidatorCallback(array('callback' => array($this, 'checkFile'))));    

public function checkFile($validator, $values){
  $file = $this->getOption('file');
  if($values['carta-compromiso'] && !$values['file'] && !$file){
    throw new sfValidatorError($validator, 'Debe subir el archivo de carta de compromiso.');
  }
  return $values;
}

在操作中,我使用

传递值$ file
$this->paso1_lleno = PostulacionTable::getInstance()->findOneByUsuarioId($this->getUser()->getGuardUser()->getId());
$this->form = new Paso1Form(array(), array('file' => $this->paso1_lleno->archivo_carta_compromiso));

即使我选择了一个文件,我在带有$ values ['file']的post验证器中获得的值也始终为null。

1 个答案:

答案 0 :(得分:1)

您需要将文件作为第二个参数绑定到bind()方法:

 $this->form->bind($request->getParameter('paso_1'), $request->getFiles('paso_1'));