2017-05-27 18 views
0

我目前使用一个CRUD应用程序创建一个博客网站风格文件。转换一个字符串使用View变压器

博客的对象需要一个文件的上传,这是我在数据库中存储为一个字符串。但是,当我尝试编辑现有的博客时,出现此错误。

The form's view data is expected to be an instance of class Symfony\Component\HttpFoundation\File\File, but is a(n) string. You can avoid this error by setting the "data_class" option to null or by adding a view transformer that transforms a(n) string to an instance of Symfony\Component\HttpFoundation\File\File. 

我想弄清楚如何做到这一点。谷歌搜索做点我到视图变压器重新解释页面。但也有例子显示了如何将一个字符串转换到实体(和问题)。但是,我不确定这是否正是我应该处理的方式,因为我想将字符串转换为对象的类是Symfony \ Component \ HttpFoundation \ File \ File。我只是想知道有谁知道我该如何去做这件事。我的印象是,我将不得不获得类Symfony \ Component \ HttpFoundation \ File \ File的实际文件类型,这正是我难以理解的。如何做到这一点?

回答

3

确定。所以也没带我一段时间来弄清楚这一点,但它是我的第一次。基本上,我所做的是使用BlogType.php类中的CallBackTranformer()函数,并将对象转换为对象,在此情况下,将文件转换为空对象,然后在其他方向上将其返回。

这里是代码,以防万一任何人想看到它。

$builder->get('imageUrl')->addModelTransformer(new CallBackTransformer(
     function($imageUrl) { 
      return null; 
     }, 
     function($imageUrl) { 
      return $imageUrl; 
     } 
    ));