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

Laravel+Vue.js+Inertia图片渲染异常:A页显示B页不显示

问题分析与解决方案

核心问题

页面B能正常渲染game.title但无法显示图片,且两个页面输出的图片路径表面一致,大概率是相对路径的上下文差异导致的请求路径错误。

解决方案

1. 统一图片路径为绝对URL(最可能解决问题)

页面A是列表页(比如/games),页面B是详情页(比如/games/1)。如果game.image存储的是相对路径(如images/game-cover.jpg),页面B会以当前URL为基准发起请求,变成/games/images/game-cover.jpg,而正确路径应该是/images/game-cover.jpg。

在Game模型中添加访问器,自动将相对路径转为绝对URL:

// app/Models/Game.php
public function getImageAttribute($value)
{
    // asset()方法会拼接当前站点的根URL
    return asset($value);
}

这样无论在哪个页面,game.image都会返回完整的绝对路径(如http://your-domain.com/images/game-cover.jpg),避免相对路径的上下文问题。

2. 优化控制器查询(顺带提升性能)

控制器B中重复查询了两次Game模型,改成关联预加载更高效:

public function index($id)
{
    $game = Game::with('usergameComments')->findOrFail($id);
    return Inertia::render('ShowGame', ['game' => $game]);
}

用findOrFail()还能在ID不存在时返回404,更规范。

3. 排查浏览器端渲染问题

如果上面的方法没解决,打开浏览器开发者工具:

  • 查看Network标签,检查图片请求的状态码:如果是404,确认请求的URL是否正确;如果是200,检查Elements标签里img元素的CSS样式,是否被隐藏(如display: none、width: 0等)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 07:30:10