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

Laravel中数据库数据未传递到view.blade视图无法展示问题求助

问题修复方案

问题根因梳理

    1. 你没有在ModulesController中定义对应获取子分类产品列表的方法,也没有将$modules变量传递到视图
    1. 视图中的判断逻辑顺序错误,在未遍历$modules的情况下直接调用$module["subcategory"],此时变量不存在,判断永远不成立
    1. 可能未执行存储软链接命令,即使数据正常也会出现图片无法加载的问题

修复步骤

1. 新增控制器方法

在ModulesController中新增屋顶产品列表的方法,直接在查询层过滤子分类为dak的产品,性能更高:

// ModulesController.php 新增方法
public function roofModules()
{
    // 直接查询所有子分类为dak的产品,按上传时间倒序排列
    $modules = \App\Models\Module::where('subcategory', 'dak')->latest()->get();
    return view('modules.roof', compact('modules'));
}

2. 新增对应路由

在routes/web.php中添加对应路由:

Route::get('/roof-modules', [\App\Http\Controllers\ModulesController::class, 'roofModules'])->name('modules.roof');

3. 修正视图逻辑

你可以直接使用控制器过滤好的$modules,不需要再在视图做判断,修改视图代码如下:

@section('content')
    <div class="container">
        <div class="flex justify-center pt-8 sm:justify-start sm:pt-0">
            <h1>所有屋顶分类产品</h1>
            @forelse ($modules as $module)
                <a href="/module/{{ $module->id }}">
                    <img src="/storage/{{$module->image}}" class="w-100" alt="{{ $module->title }}"/>
                </a>
            @empty
                <p>暂无屋顶分类的产品</p>
            @endforelse
        </div>
    </div>
@endsection

这里用@forelse替代@foreach,空数据时会显示提示,便于排查问题

4. 执行存储软链接命令

如果之前没执行过该命令,需要在项目根目录运行:

php artisan storage:link

这样storage/app/public下的文件才能通过/storage/路径对外访问。

验证方法

先确认数据库中存在subcategory为dak的产品数据,访问/roof-modules路径即可看到对应产品。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 19:54:02