Laravel视图中注释代码触发异常,求原因及解决方法
问题解答
你遇到的问题核心原因是:HTML注释和Laravel Blade的执行顺序不一样。
HTML注释是给浏览器看的,只有当服务器把渲染好的页面发送到浏览器后,浏览器才会忽略注释里的内容。但Laravel的Blade模板是在服务器端先解析执行的——不管你用HTML注释把Blade代码包起来,服务器都会先处理里面的{{$dsp_account['dsp_fee_pct']}}表达式。如果这个变量不存在或者有问题,服务器直接就抛出异常了,根本轮不到浏览器处理HTML注释。
解决方法
有两种简单的处理方式:
- 用Blade专属注释(推荐):Blade提供了自己的注释语法
{{-- 内容 --}},这种注释会在服务器解析时直接被忽略,既不会执行里面的代码,也不会输出到最终的HTML里。修改后的代码如下:
{{-- <td> Removed in and not to use <input type="text" class="table-control p-r-20" name="dsp_fee_pct" value="{{$dsp_account['dsp_fee_pct']}}" id="dsp_fee_pct"> <span class="table-control-addon-right">%</span> </td> --}}
- 转义Blade语法:如果一定要保留HTML注释的形式,需要把Blade的变量语法转义,让服务器不解析它。比如把
{{改成{!! '{{' !!},不过这种方式比较繁琐,不推荐。
从异常来看,应该是$dsp_account['dsp_fee_pct']这个变量未定义或者不存在,用Blade注释就能彻底避免服务器解析这段代码,自然不会触发异常。
内容的提问来源于stack exchange,提问作者Bastian
相关产品推荐
相关产品推荐

