Symfony3在上传图像时表现得很奇怪

时间:2016-08-10 07:50:31

标签: php symfony

我创建了一个表单,该表单应该将图像保存到我的数据库中的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值,它也显示在我的数据库中。我在这里做错了什么?

0 个答案:

没有答案