【发布时间】:2016-12-18 00:53:00
【问题描述】:
我是 Symfony 的新手,偶然发现了一个向我的一个表单添加简单图片上传的问题。
## DefaultController.php ##
/**
* @Route("/admini/articleadd", name="articleadd")
*/
public function articleAdd(Request $request){
$article = new Article();
$form = $this->createFormBuilder($article)
->add('title', TextType::class, array('attr' => array('maxlenght' => 14)))
->add('text', TextareaType::class)
->add('image', FileType::class)
->add('add', SubmitType::class, array('label' => 'Create Article'))
->getForm();
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$article = $form->getData();
/** @var Symfony\Component\HttpFoundation\File\UploadedFile $file */
$file = $article->getImage();
$fileName = md5(uniqid());
$file->move(
$this->getParameter('image_directory'),
$fileName
);
$article->setImage($fileName);
$em = $this->getDoctrine()->getManager();
$em->persist($article);
$em->flush();
return $this->redirectToRoute('login');
}
return $this->render('default/articleadd.html.twig', array(
'form' => $form->createView(),
));
}
#Article.php
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity
* @ORM\Table(name="Article")
*/
class Article
{ //...//
/**
* @ORM\Column(type="string")
* @Assert\File(mimeTypes={ "image/jpeg" })
*/
private $image;
//...//
}
所以每当我尝试提交表单时,我都会收到消息:
致命错误:在 null 上调用成员函数 move()
那么显然 "$file = $article->getImage()" 返回为空?
【问题讨论】:
标签: php symfony orm doctrine-orm