Forms Symfony 3-文件编辑表单不';不显示照片名称

Forms Symfony 3-文件编辑表单不';不显示照片名称,forms,file,upload,symfony,Forms,File,Upload,Symfony,我在编辑包含文件的实体时遇到问题。 我按照Symfony文档上传了一个文件,效果很好。 创建时,我的文件保存在上传文件夹中,加密名称保存在数据库中 为了避免出现任何错误,我按照文档进行了编辑,我引用: 创建表单以编辑已持久化的项时,文件表单类型仍然需要一个文件实例。由于持久化实体现在只包含相对文件路径,因此首先必须将配置的上载路径与存储的文件名连接起来,并创建一个新的文件类 它成功了 但在表单的显示中,文件字段显示“未选择任何文件” 这是我的控制器: public function editAc

我在编辑包含文件的实体时遇到问题。 我按照Symfony文档上传了一个文件,效果很好。 创建时,我的文件保存在上传文件夹中,加密名称保存在数据库中

为了避免出现任何错误,我按照文档进行了编辑,我引用:

创建表单以编辑已持久化的项时,文件表单类型仍然需要一个文件实例。由于持久化实体现在只包含相对文件路径,因此首先必须将配置的上载路径与存储的文件名连接起来,并创建一个新的文件类

它成功了

但在表单的显示中,文件字段显示“未选择任何文件”

这是我的控制器:

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>

{{form_小部件(form.photo,{'attr':{'class':'formcontrol'}}}}
{{form_errors(form.photo)}
如果我执行
{{dump(form.photo)}
操作,我将获得属于我的实体的照片的所有信息

你有没有办法在字段中获取图像的名称


谢谢

这是最合乎逻辑的行为

文件类型输入中显示的文件是本地文件(来自计算机),然后再发送到服务器


如果要“显示”当前文件,请添加一个自定义字段,该字段将在文件名存在时显示文件名。

这是最符合逻辑的行为

文件类型输入中显示的文件是本地文件(来自计算机),然后再发送到服务器


如果要“显示”当前文件,请添加一个自定义字段,该字段将在文件名存在时显示文件名。

此行似乎不正确

    $entity->setPhoto(
        new File($this->getParameter('images_directory').'/'.$entity->getPhoto())
    );
如果调用$entity->getPhoto(),则意味着文件已经存在,但是您正在为该实体设置一个新文件。我的想法是找不到文件,因此没有显示名称


如果您添加了FormType和Model,则可能有助于确定问题。

此行似乎不正确

    $entity->setPhoto(
        new File($this->getParameter('images_directory').'/'.$entity->getPhoto())
    );
如果调用$entity->getPhoto(),则意味着文件已经存在,但是您正在为该实体设置一个新文件。我的想法是找不到文件,因此没有显示名称


如果您添加了FormType和Model,这可能有助于确定问题。

我已经做了一项工作来解决这个问题,我无法在编辑表单中传递文件,因此我显示当前图像,如果用户不上载新图像,则保存旧图像

我有一个军队实体,在我的树枝上我称之为

<img style="max-width:128px" src={{ asset('uploads/army/' ~ army.image.filename) }}>

我做了一个工作来解决这个问题,我无法在编辑表单中传递文件,所以我显示当前图像,以防用户不上传新图像,保存旧图像

我有一个军队实体,在我的树枝上我称之为

<img style="max-width:128px" src={{ asset('uploads/army/' ~ army.image.filename) }}>

嗨,你找到解决办法了吗?我是在同一点上叠加的:-(实际上,我认为您无法通过“获取字段中图像的名称”。您可能希望显示图片,例如,在“未选择文件”的正下方特别是,如果您有一个表单可以同时编辑多个对象,那么最好显示不同的图片。不幸的是,我不知道如何做到这一点。事实上,令人困惑的问题是,为什么看起来不可能显示类似{{form.photo.name}的内容,尽管很清楚如何显示{dump(form.photo)}后者也显示photo.name。你能修复它吗?嗨,你找到什么解决方案了吗?我被堆积在同一个点上:-(实际上,我认为你不能“获取字段中图像的名称”。你可能希望的是显示图片,比如说,就在“未选择文件”的下方特别是,如果您有一个表单可以同时编辑多个对象,那么最好显示不同的图片。不幸的是,我不知道如何做到这一点。事实上,令人困惑的问题是,为什么看起来不可能显示类似{{form.photo.name}的内容,尽管很清楚如何显示{dump(form.photo)}后者也显示photo.name。您可以修复它吗?不,这正是建议您执行的操作。您正在设置一个新文件,其中包含以前上载的文件的信息。这很好,因为您希望呈现编辑表单。但是,对我来说,不清楚如何在表单中插入该信息。不,这正是您想要的建议您这样做。您正在设置一个新文件,其中包含以前上载的文件的信息。这很好,因为您希望呈现一个编辑表单。但是,对于我来说,不清楚如何在表单中插入该信息。“添加自定义字段”,如何?如何…只需在表单中添加类似的内容:
{%if-form.photo | length>0%}{%endif%}
谢谢,但我不明白。请看。“添加自定义字段”,how?thks.how…只需在您的表单中添加类似的内容:
{%if-form.photo | length>0%}{%endif%}
谢谢,但我不明白。请看。