【发布时间】:2016-08-16 13:40:17
【问题描述】:
我正在尝试为 Cafe 实体创建表单。
咖啡厅.php
class Cafe{
/**
* @var string $image
* @Assert\File( maxSize = "1024k", mimeTypesMessage = "Please upload a valid Image")
* @ORM\Column(name="image", type="string", length=255, nullable=true)
*/
private $image;
}
CafeType.php
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', TextType::class, array('label' => 'Name'))
->add('image', FileType::class, array(
'label' => 'Image',
'data_class' => null,
'required' => false
))
;
}
CafeController.php
public function editAction(Request $request, Cafe $cafe)
{
$editForm = $this->createForm('AdminBundle\Form\CafeType', $cafe);
$editForm->handleRequest($request);
if ($editForm->isSubmitted() && $editForm->isValid()) {
$img = $editForm['image']->getData();
if($img){
$fileLocation = $this->get('app.s3_file_uploader')->putFileToBucket($img, 'cafe-images/'.uniqid().'/cafe-image');
$cafe->setImage($fileLocation);
}
$em = $this->getDoctrine()->getManager();
$em->persist($cafe);
$em->flush();
return $this->redirectToRoute('cafe_index');
}
return $this->render('AdminBundle:Cafe:edit.html.twig', array(
'cafe' => $cafe,
'edit_form' => $editForm->createView()
));
}
在控制器中,我使用自定义服务将图像保存在 S3 存储桶中,该存储桶返回图像位置文件位置。然后我将此文件 url 设置为 Cafe 实体的 $image 属性。
创建咖啡馆工作正常。但是当我尝试编辑咖啡馆时,上传输入为空。这样当我点击保存时,旧图像就会被删除。每次我想编辑咖啡馆时,我都需要上传 iamge。如何将图像文件保持为编辑形式?
【问题讨论】:
标签: php forms symfony doctrine