You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中如何在blade视图的public_path()函数中传入接收的数据?

解决Laravel Blade中动态加载图片路径的问题

你的写法存在两个核心问题:

  1. 错误使用了public_path()函数——它返回服务器本地的文件系统绝对路径,浏览器无法直接识别该路径,应该用asset()函数生成可通过HTTP访问的URL。
  2. Blade模板的变量解析语法错误,不能在{{}}里嵌套{{}},且单引号包裹的变量不会被PHP解析。

正确写法参考:

1. 字符串拼接方式

<img src="{{ asset('/assets/img/' . $img) }}" alt="">

2. 双引号字符串插值(PHP原生特性)

<img src="{{ asset("/assets/img/$img") }}" alt="">

3. 若$img已包含完整相对路径

如果数据库中存储的是assets/img/xxx.jpg这类完整相对路径,直接传入asset()即可:

<img src="{{ asset($img) }}" alt="">

之前写法失效的原因:

  • 嵌套{{$img}}:Blade会把内部的{{$img}}当成普通文本输出,不会解析为变量值。
  • public_path()的问题:比如它会返回/var/www/xxx/public/assets/img/xxx.jpg,浏览器无法访问服务器本地的文件路径,必须用asset()生成类似http://你的域名/assets/img/xxx.jpg的可访问URL。
  • 单引号包裹变量:PHP单引号字符串中的变量不会被解析,$img会直接以字符串形式输出,不会替换为实际的图片名称。

内容的提问来源于stack exchange,提问作者Studlara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 17:05:58