Laravel中如何在blade视图的public_path()函数中传入接收的数据?
解决Laravel Blade中动态加载图片路径的问题
你的写法存在两个核心问题:
- 错误使用了
public_path()函数——它返回服务器本地的文件系统绝对路径,浏览器无法直接识别该路径,应该用asset()函数生成可通过HTTP访问的URL。 - 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
相关产品推荐
相关产品推荐

