Symfony Twig - 图片无法显示

3

有点困惑。我看了几个帖子,但它们都没有解决问题。

1)  <img src="/web/uploads/ce438b2eb1c01d85f3d6d6c52efc1175.png"/>

2)   <img src="{{ asset('/uploads/ce438b2eb1c01d85f3d6d6c52efc1175.png')}}"/>

编辑:

2)可以工作
1)不能工作。

令人惊讶的是,在PHPstorm中,如果我在src路由中输入/web,它会为我选择它,然后为我选择uploads,甚至可以看到文件。只是不会显示!?

以下内容对我有效,它显示了图片。所以现在没有真正的紧急情况。但是,为什么1)无法工作很有趣呢?

  <img src="{{ asset('/uploads/' ~ media)}}"/>

你使用的Symfony版本是什么?已经有一段时间没有使用过了,但是你不应该将/upload文件夹作为主文件夹,而不是在bundle内部吗?Symfony页面上的指南 - timiTao
根据文档的建议,它已经包含在我的捆绑包中。 - user7714918
我相信我犯了一个错误。让我编辑一下。 - user7714918
我已更新了代码。我的其中一种方法有误,因为我在查找包时,文件夹并不在包中。我仍然收到404错误。 - user7714918
好的,但你的目标是什么?以某种方式显示图像?通过控制器来显示它吗?MyBundle:Database:mediaView.html.twig的内容是什么? - timiTao
更新了。这是timi和image标签的唯一内容。 - user7714918
4个回答

0

你的代码中有:

< img src="mySite/web/uploads/{{media}}"/>

但是你的域名可能设置在项目文件夹 mySite/web 上,这样从浏览器访问时可能不正确。 那么你最终的链接应该是

< img src="mySite/web/uploads/{{media}}"/>

或者

< img src="{{ asset('/mySite/web/uploads/{{media}}')}}"/>

如果这些方法都无法解决问题,也许需要请教更有经验的人。


1
在您的控制器中,您将字符串赋值给file。现在您尝试将其用作数组。请修复您的代码 :) - timiTao
是的,你又说对了。但那只是个打字错误。我不仅仅是想知道为什么1)不起作用。谢谢。 - user7714918

0

如果第二个方法可行,应该是:

  1. <img src="/uploads/ce438b2eb1c01d85f3d6d6c52efc1175.png"/>

  2. <img src="{{ asset('/uploads/ce438b2eb1c01d85f3d6d6c52efc1175.png')}}"/>

但这意味着您的虚拟主机根目录设置不正确,应该指向/web,但它似乎指向了/web的父级,即您的Symfony项目的根目录。


0

web/ 是一个基本的目录,包含了网站文件,你可以在这里开始查找前端文件: [img, js, css]


0

通过搜索文档,答案应该很容易找到。

<img src="/web/uploads/ce438b2eb1c01d85f3d6d6c52efc1175.png"/>

不起作用,只是因为如果您将此代码编写在例如AppBundle/Resources/views/Default/index.html.twig文件中,则意味着该目录(AppBundle/Resources/views/Default/)内应存在web/uploads/目录结构,并且其中包含图像。

这不是您的情况。因此,对于AppBundle/Resources/views/Default/index.html.twigsrc应为:

<img src="../../../../../uploads/ce438b2eb1c01d85f3d6d6c52efc1175.png

这就是为什么asset()函数很有用。因为它将路径映射到您的公共目录(在composer.json文件中声明,在symfony-web-dir键下); 所以,无论从哪里调用此函数,它都将始终返回公共目录的路径,因此您不必担心所有这些含有../../的包含问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接