我创建了一个表单,该表单应该将图像保存到我的数据库中的BLOB
列。
/**
* @inheritDoc
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('name', TextType::class)
->add('type', TextType::class)
->add('category', TextType::class)
->add('url', TextType::class)
->add('seoText', TextareaType::class, array(
'attr' => array('rows' => 15)
))
->add('file', FileType::class)
->add('save', SubmitType::class, array('label' => 'Opslaan'));
}
首先,我发现的意外行为是我的WYSIWYG编辑器处于HTML编辑模式。如果是,Symfony验证会告诉我有一个字段丢失,当我切换回WYSIWYG模式时,一切都会好的。
最后,我使用getter和setter在模型private $file
中创建了一个额外的字段。我还创建了一个额外的方法upload
,如下所示:
/**
* @ORM\PrePersist()
* @ORM\PreUpdate()
*/
public function upload()
{
if (null === $this->file) {
return;
}
$strm = fopen($this->file->getRealPath(), 'rb');
$this->setImage(stream_get_contents($strm));
}
我的控制器看起来像这样:
/**
* Create a new page.
* @Route("/pages/new", name="new_page")
* @Method(methods={"GET", "POST"})
* @param Request $request
* @return \Symfony\Component\HttpFoundation\RedirectResponse|Response
*/
public function newAction(Request $request)
{
$page = new EnrichedPages();
$form = $this->createForm(EnrichedPageType::class, $page);
$form->handleRequest($request);
// Is this form submitted and valid? Then get Doctrine to create it.
if ($form->isSubmitted() && $form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($page);
$em->flush();
return $this->redirectToRoute('all_pages');
}
return $this->render(':pages:new.html.twig', array(
'page' => $page,
'newPageForm' => $form->createView()
));
}
doctrine.DEBUG日志告诉我仍有一个null
值,它也显示在我的数据库中。我在这里做错了什么?