【问题标题】:Symfony2 expecting String when evaluating subformSymfony2 在评估子表单时需要字符串
【发布时间】:2016-08-12 13:58:44
【问题描述】:

我有一个 Comment 实体,它与 FileUpload 实体具有多对一关系,以允许附加图像。这是 Comment 实体中的关系:

/**
* @ORM\ManyToOne(targetEntity="CMSBundle\Entity\FileUpload", cascade={"persist"} )
* @ORM\JoinColumn(name="image_id", referencedColumnName="id")
*/
protected $image;

FileUpload 实体只是将一些文件信息存储在 DB 中,并有一个 File 字段来启用表单中的上传。这是一个sn-p:

/**
 * @ORM\Entity
 * @ORM\Table(name="file_uploads")
 */
class FileUpload {

  /**
   * @ORM\Column(type="integer")
   * @ORM\Id
   * @ORM\GeneratedValue(strategy="AUTO")
   */
  private $id;

  /**
   * @ORM\Column(type="string", length=20)
   */
  private $fileExtension;

  /**
   * @Assert\File(maxSize="6000000")
   */
  private $file;
  ...

我在 Comment 表单中创建 image 字段如下:

$builder->add('image', new \CMSBundle\Form\FileUploadType(), 
    array('required'=>false));

这里是我在 FileUploadType 中创建文件字段的地方:

$builder->add('file',null, array(
    'required'=>false,
    'label'=>false
));

这在我的一个应用程序中运行良好,但是现在我在另一个应用程序中使用它,并且在创建评论时上传图像时收到以下错误消息:

Expected argument of type "string", "CMSBundle\Entity\FileUpload" given

Stack Trace
1. in vendor/symfony/symfony/src/Symfony/Component/Validator/Constraints/FileValidator.php at line 119
2. at FileValidator ->validate (object(FileUpload), object(File)) 
in vendor/symfony/symfony/src/Symfony/Component/Validator/Validator/RecursiveContextualValidator.php at line 862 

我已经尝试通过 Symfony 代码来查找问题,并且 FileValidator 似乎附加到 Comment 中的图像字段,这没有意义,因为我在创建表单时指定它是 FileUploadType。这也适用于不同的应用程序,所以我可以看到为什么它不能在这里工作。有谁知道这可能是什么原因造成的?

【问题讨论】:

    标签: php forms symfony doctrine


    【解决方案1】:

    我相信您在创建表单时有错误:

    $builder->add('image', new \CMSBundle\Form\FileUploadType(), 
        array('required'=>false));
    

    应该是

    $builder->add('image', \CMSBundle\Form\FileUploadType::class, 
        array('required'=>false));
    

    【讨论】:

    • 感谢您的回复。传递 ::class 是 Symfony 2.8 的一部分,我使用的是 2.6,您可以在其中传递类型的实例。
    【解决方案2】:

    发现问题。我有一个旧的validation.yml 文件,它告诉评论中的图像字段它是一个文件。

    CommentsBundle\Entity\Comment:
    properties:
        image:
            - File:
                maxSize: 6000000
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-05
      • 2016-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多