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

Laravel 10开发QR查看器时遭遇qr_codes未定义错误求助

问题排查与修复方案

1. 视图变量名不匹配

控制器中传递给视图的变量键是qr_code,但视图里错误使用了$qr_codes,这是直接导致“未定义”错误的原因:

  • 控制器返回语句:return view ('QRcodeviewer',['qr_code'=>$qr_codes]);
  • 视图中需统一使用$qr_code而非$qr_codes

2. 查询结果为数组,无法直接访问对象属性

DB::select()返回的是多条记录组成的数组,不能直接用->uuid调用属性,需根据业务场景处理:

  • 若仅需单条记录:改用DB::selectOne()获取单条数据,或使用Eloquent的first()方法(更推荐)
  • 若需展示多条记录:在视图中用@foreach循环遍历数组

3. 路由未命名,无法生成路由链接

当前路由未设置名称,Route('QRCodeviewer')会找不到对应路由,必须给路由添加命名。


修复后的完整代码

控制器代码(单条记录场景)

<?php

namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class QrCodeController extends Controller{
    public function index(){
        // 获取单条二维码记录
        $qr_code = DB::selectOne('select * from qr_code limit 1');
        return view ('QRcodeviewer',['qr_code'=>$qr_code]);
    }
}

Blade视图代码(单条记录场景)

@extends('layouts.dashboard')
    @section('content')
        <div class="container mt-4">
            <div class="card">
                <div class="card-header">
                    <h2>QR Absen</h2>
                </div>
                <div class="card-body">
                    @if($qr_code)
                        {{ QrCode::size(300)->generate(route('qrcode.viewer', $qr_code->uuid)) }}
                    @else
                        <p>未找到二维码记录</p>
                    @endif
                </div>
            </div>
        </div>
    @endsection

路由代码(添加命名)

Route::get('QRcodeviewer','QrCodeController@index')->name('qrcode.viewer');

多条记录场景补充(若需展示多个二维码)

控制器代码

<?php

namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class QrCodeController extends Controller{
    public function index(){
        // 获取所有二维码记录
        $qr_codes = DB::select('select * from qr_code');
        return view ('QRcodeviewer',['qr_codes'=>$qr_codes]);
    }
}

Blade视图代码

@extends('layouts.dashboard')
    @section('content')
        <div class="container mt-4">
            <div class="card">
                <div class="card-header">
                    <h2>QR Absen</h2>
                </div>
                <div class="card-body">
                    @foreach($qr_codes as $item)
                        <div class="mb-4">
                            {{ QrCode::size(300)->generate(route('qrcode.viewer', $item->uuid)) }}
                        </div>
                    @endforeach
                </div>
            </div>
        </div>
    @endsection

额外注意事项

  • 确保qr_code表中存在uuid字段且有有效数据
  • 建议使用Eloquent模型替代原生DB查询,代码更简洁易维护
  • 确认二维码生成包(如simplesoftwareio/simple-qrcode)已正确安装配置

内容的提问来源于stack exchange,提问作者Ignatius Abraham Adi Himawan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 03:23:15