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
相关产品推荐
相关产品推荐

