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

Laravel中使用Simple QrCode批量生成二维码的方法咨询

解决Simple QrCode批量生成二维码时循环变量不生效的问题

嘿,我来帮你搞定这个问题!你遇到的核心问题是混淆了Blade模板语法和原生PHP代码的执行逻辑——你把Blade的{!! !!}语法当成字符串拼接输出,但Laravel只会解析模板里的Blade指令,直接echo这段字符串的话,它只会被当成纯文本,不会生成二维码。

下面给你两种正确的实现方式,根据你的使用场景选择:

方式一:在Blade模板中实现(推荐,Laravel项目首选)

如果是在Laravel的Blade模板文件里(比如.blade.php),直接用Blade自带的循环语法即可,代码更简洁易读:

<table border="1">
    @for ($i = 1; $i < 5; $i++)
        <tr>
            <!-- 直接在generate方法中使用循环变量$i,用{!! !!}输出HTML(不转义) -->
            <td>{!! QrCode::size(100)->generate("http://localhost/acex/1.php?g={$i}") !!}</td>
            <td>对应链接:http://localhost/acex/1.php?g={{ $i }}</td>
        </tr>
    @endfor
</table>

方式二:在原生PHP文件中实现

如果是在普通PHP文件里(非Blade模板),直接调用QrCode::generate()获取生成的HTML代码,然后输出即可,不需要依赖Blade语法:

<table border="1">
<?php
for ($i = 1; $i < 5; $i++) {
    $url = "http://localhost/acex/1.php?g=" . $i;
    // 直接获取二维码的HTML内容,不需要包裹Blade的{!! !!}
    $qrHtml = QrCode::size(100)->generate($url);
    echo "<tr><td>{$qrHtml}</td><td>对应链接:{$url}</td></tr>";
}
?>
</table>

为什么你的原代码不生效?

你之前的代码把{!! QrCode::size(100)->generate('' . $url .'') !!}当成字符串拼接后echo,这相当于告诉PHP输出这段文本,而不是让Laravel执行QrCode的生成逻辑。只有当Blade模板引擎解析到{!! !!}时,才会执行里面的PHP代码并输出不转义的HTML结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:07:20