【发布时间】:2017-06-16 03:26:42
【问题描述】:
我在编辑具有文件的实体时遇到问题。 我按照 Symfony 文档上传文件,它工作正常。 在创建时,我的文件很好地存储在我的上传文件夹中,并且加密的名称存储在数据库中。
对于我遵循文档的版本,以免出现任何错误,我引用:
创建表单以编辑已持久化的项目时,文件表单类型仍需要一个 File 实例。由于持久化实体现在只包含相对文件路径,因此您首先必须将配置的上传路径与存储的文件名连接起来并创建一个新的 File 类
它奏效了。
但在表单的显示中,文件字段显示“未选择文件”
这是我的控制器:
public function editAction(Request $request, Produits $entity)
{
$entity->setPhoto(
new File($this->getParameter('images_directory').'/'.$entity->getPhoto())
);
$form = $this->createForm('ProjectBundle\Form\Produit\ProduitType', $entity);
$form->handleRequest($request);
if ($form->isSubmitted()) {
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();
$this->addFlash('success', 'Le produit "'.$entity.'" a été modifié.');
return $this->redirectToRoute('produit_show', array('id' => $entity->getId()));
}
} elseif ($form->isSubmitted()) {
$this->addFlash('error', 'Le produit "'.$entity.'" n\'a pas pu être modifié.');
}
return $this->render('ProjectBundle:admin/Produit:edit.html.twig', array(
'entity' => $entity,
'form' => $form->createView(),
));
}
在我看来:
<div class="input-field{% if form.photo.vars.errors|length %} has-error{% endif %}">
{{ form_widget(form.photo,{'attr': {'class': 'form-control'}}) }}
{{ form_errors(form.photo) }}
</div>
如果我执行{{ dump(form.photo) }},我将获得关于属于我的实体的照片的所有信息。
你有想法在字段中获取图像的名称吗?
谢谢!
【问题讨论】:
-
您好,您找到解决方案了吗?我在同一点堆叠:-(
-
实际上,我认为您无法“获取字段中图像的名称”,these reasons。您可能希望在“未选择文件”字符串下方显示图片。特别是,如果您有一个可以一次编辑多个对象的表单,那么显示不同的图片会很好。不幸的是,我不知道该怎么做。
-
确实,令人费解的问题是为什么似乎无法显示类似 {{ form.photo.name }} 的内容,尽管很清楚如何显示 {{ dump(form.photo) }},后者也显示 photo.name。
-
你能解决它吗?