如何在Laravel的@include()中传递包含{{ }}语法的路由参数
问题根因
- Blade 模板的
{{ }}语法仅用于在HTML输出区域打印变量/表达式结果,@include的参数数组本身处于PHP解析上下文,不允许嵌套{{ }}。 - 原写法存在单引号嵌套冲突:外层数组值用单引号包裹,内部
route('article')又使用单引号,直接触发语法解析错误,你收到的报错翻译为:
解析错误(ParseError):语法错误,意外的字符串 'article' (T_STRING),期望符号 ']'
解决方案
常用场景(传递解析完成的路由URL)
绝大多数场景下你需要的是直接传递route()函数生成的真实URL给子模板,直接写即可,不需要加{{ }}:
@include('includes.content.single-article', ['href' => route('article')])
你子模板中原有的 <a href="{{ $href }}"> 代码无需修改,渲染后会直接输出带真实URL的a标签。
特殊场景(需要在最终HTML中保留未解析的{{ route('article') }}字符串)
如果你确实需要输出Blade语法字符串到前端,转义内部单引号即可:
@include('includes.content.single-article', ['href' => '{{ route(\'article\') }}'])
内容的提问来源于stack exchange,提问作者Hiddennord
相关产品推荐
相关产品推荐

