Laravel 9中Dompdf结合if-else生成图片报错求助
问题解决方法
你的核心问题是条件判断错误使用了赋值运算符=,而非比较运算符==/===,这会修改变量值并导致逻辑混乱:
错误原因
在Blade(基于PHP)中:
=是赋值运算符,用于给变量赋值,而非判断相等- 条件判断需要用
==(松散比较)或===(严格比较,推荐)
你原代码中的@if ($student->w2c = '')会把空字符串赋值给$student->w2c,这个表达式返回空字符串(布尔语境下为false),因此会强制进入else分支显示图片;同时$student->w2c被修改为空,可能导致$w2_img的生成逻辑失效(比如仅当$student->w2c为true时才生成有效base64图片),最终出现加载错误。
第二个代码块看似正常,实际也是错误逻辑:$student->br = 'area1'会强制把$student->br设为'area1',导致第一个if永远成立,并非真实的条件判断结果。
修正后的代码
图片判断逻辑
如果$student->w2c是布尔值(true/false),建议直接判断布尔值:
@if (!$student->w2c) no image. @else <img src="data:image/png;base64, {{ $w2_img }}" width="100%" class="img-thumbnail"> @endif
如果$student->w2c是字符串类型,用严格比较:
@if ($student->w2c === '') no image. @else <img src="data:image/png;base64, {{ $w2_img }}" width="100%" class="img-thumbnail"> @endif
区域判断逻辑
@if ($student->br === 'area1') area1 info @elseif ($student->br === 'area2') area2 info @else - @endif
内容的提问来源于stack exchange,提问作者bluetail
相关产品推荐
相关产品推荐

