【发布时间】:2018-08-10 01:45:07
【问题描述】:
我在按更新时遇到错误。
我使用与添加相同的代码。
我认为可能是图片上传导致了问题。
这是错误:
表单的视图数据应该是 Symfony\Component\HttpFoundation\File\File 类的实例,但它是一个 (n) 字符串。
您可以通过将“data_class”选项设置为 null 或添加将 a(n) 字符串转换为 Symfony\Component\HttpFoundation\File\File 实例的视图转换器来避免此错误。
我的控制器:
public function updateAction(Request $request ,$id)
{
$em = $this->getDoctrine()->getManager();
$forum = $em->getRepository("ForumBundle:Forum")->find($id);
$forum->setModifiee(new \DateTime('now'));
$form = $this->createForm(ForumType::class, $forum);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$file = $form['image']->getData();
$file->move("images/", $file->getClientOriginalName());
$forum->setImage("images/" . $file->getClientOriginalName());
$em->persist($forum);
$em->flush();
return $this->redirectToRoute('forum_show');
}
return $this->render("@Forum/Sujet/Update_topic.html.twig", array("form" => $form->createView()));
}
我的表格:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('titre')
->add('tags')
->add('image', FileType::class,array('attr' => array(
'class'=>'form-control'
//'class'=>'btn btn-default btn-file'
)))
->add('blog',TextareaType::class)
->add('Ajouter',SubmitType::class,array('attr' => array(
'class'=>'theme_button color3 wide_button'
)));
}
这些是我的包括:
namespace ForumBundle\Controller;
use blackknight467\StarRatingBundle\Form\RatingType;
use ForumBundle\Form\RateType;
use ForumBundle\Entity\Commentaire;
use ForumBundle\Entity\Forum;
use ForumBundle\Entity\Rating;
use ForumBundle\Form\CommentaireType;
use ForumBundle\Form\ForumType;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\File\File;
【问题讨论】:
-
你能告诉我们你的课程的导入部分吗?通常当您没有在导入部分导入适当的类时会发生此错误,symfony 会尝试自己来宾它应该使用哪个类
-
@NDZIEPatrickJoel
-
我将您在评论部分包含的内容合并到您的问题中。
-
能否提供您的表单类的完整代码?
标签: forms symfony file-upload crud