文件名未以 Symfony 5.2 形式显示

Filename not shown in Symfony 5.2 in form

我刚刚在学习 Symfony,也许我做错了什么。 我创建了一个可以上传文件的简单表单。选择文件后,文件名未显示在表单中。

屏幕 1 - 选择图片

屏幕 2 - 未显示文件名

图片名称已正确保存到数据库中,因此它必须存在:)

我用了->add('picture', FileType::class, ['required' => false])

有人能把我推向正确的方向吗?在过去的 2 小时里,我一直在努力解决这个问题。

使用 Bootstrap 表单主题时,Symfony 中的该字段类型存在“错误”。

如果您使用的是 Symfony 的 Boostrap 表单主题

# config/packages/twig.yaml

twig:
    default_path: '%kernel.project_dir%/templates'
    form_themes:
        - 'bootstrap_4_horizontal_layout.html.twig'

我建议添加一些 Javascript 来解决这个问题。

$('.custom-file-input').on('change', function(event) {
  let inputFile = event.currentTarget;
  $(inputFile).parent().find('.custom-file-label').html(inputFile.files[0].name);
});

请注意,我在这里使用的是 ES6 语法,为了更好地与旧浏览器兼容,如果您不使用转译器,则可能需要使用 ES5。此外,我使用 custom-file-label class 因为我使用的是 Symfony 的 Bootstrap 4 表单主题,如果您使用其他主题,您可能需要进行调整。

..files[0].name 已被使用,因为您的文件类型可以接受多个文件。