如何阻止Blade语法转义?解决邮箱地址中Blade指令被转义问题
解决Blade中邮箱地址@与指令冲突的问题
嘿,我懂你碰到的麻烦了——当你想写 Email: contact@{{ request()->getHost() }} 时,Blade会把 @{{ 当成转义标记,结果输出的是 contact{{ request()->getHost() }},完全不是你想要的动态邮箱地址对吧?
别慌,有几个简单的办法能搞定这个问题:
方法一:在Blade表达式内拼接完整字符串
把整个邮箱地址的构建逻辑放在{{ }}里面,让@成为字符串的一部分,就不会和Blade的指令前缀冲突了:Email: {{ "contact@" . request()->getHost() }}这种写法最贴合Blade的风格,Blade会正常解析
request()->getHost(),再和contact@拼接成完整的邮箱地址。方法二:拆分@符号单独拼接
如果你习惯分开书写,也可以把@作为独立的字符串片段拼进去:Email: contact{{ '@' . request()->getHost() }}效果和第一种方法完全一致,只是写法上更灵活。
方法三:直接使用原生PHP代码
要是你不介意用原生PHP,也可以直接在Blade模板里写echo语句:Email: <?php echo 'contact@' . request()->getHost(); ?>这种方法虽然可行,但不如前两种符合Blade的最佳实践。
为啥原来的写法会失效?
Blade里的 @{{ 是个特殊语法,作用是原样输出{{符号,而不是解析里面的表达式。所以当你写 contact@{{ ... }} 时,Blade会把 @{{ 转换成 {{,导致后面的表达式根本没被解析,直接原样输出了。
内容的提问来源于stack exchange,提问作者J. Doe
相关产品推荐
相关产品推荐

