Laravel使用Blade语法报unexpected identifier "backend"错误
报错原因
这个ParseError是Blade模板编译时的引号边界识别冲突导致的:
- 你写的
{{ }}PHP输出块直接嵌套在HTMLclass属性的双引号包裹范围内,Blade的编译正则会错误截断块内的PHP表达式,原本完整的三元判断逻辑被拆分 - 当PHP解析编译后的代码时,读到
backend标识符的位置,前面的语法结构已经被错误闭合,因此抛出「unexpected identifier "backend", expecting ")"」的语法错误
修复方案
按推荐优先级从高到低排列:
- 优先使用Laravel官方提供的
@class指令处理动态样式类,专门为这类场景设计,完全规避引号冲突,可读性也最好:
<li @class([ 'nav-item', 'active' => Route::currentRouteName() == 'backend.categories' ])>
- 如果要保留三元运算写法,不要在class属性的双引号里做片段拼接,把完整类名放到
{{ }}块内拼接后统一输出,同时给三元运算加括号明确优先级:
<li class="{{ 'nav-item ' . (Route::currentRouteName() == 'backend.categories' ? 'active' : '') }}">
- 也可以通过区分HTML属性和PHP字符串的引号类型解决冲突,把class属性的外层引号改为单引号,块内PHP字符串统一用双引号:
<li class='nav-item {{ Route::currentRouteName() == "backend.categories" ? "active" : "" }}'>
内容的提问来源于stack exchange,提问作者Morri
相关产品推荐
相关产品推荐

