You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Blade模板PHP标签语法错误导致前端显示源码问题

Laravel 阿拉伯语环境按需加载rtl.css 语法修复

原有错误代码

style.blade.php(存在语法错误版本)

<link rel="stylesheet" href="{{ asset('assets/vendor/libs/bootstrap/bootstrap.min.css') }}">
<link rel="stylesheet" href="{{ asset('assets/vendor/libs/fontawesome/fontawesome.min.css') }}">
<link rel="stylesheet" href="{{ asset('assets/vendor/libs/toastr/toastr.min.css') }}">
<link rel="stylesheet" href="{{ asset('assets/vendor/libs/simplebar/simplebar.min.css') }}">
<link rel="stylesheet" href="{{ asset('assets/css/extra/colors.css') }}">
<link rel="stylesheet" href="{{ asset('assets/css/extra/extra.css') }}">
@stack('styles_libs')
<link rel="stylesheet" href="{{ asset('assets/css/application.css') }}">
@stack('styles')
<link rel="stylesheet" href="{{ asset('assets/css/extra/custom.css') }}">
<?php
if($language->code =="ar") ?>
<link rel="stylesheet" href="{{ asset('assets/css/rtl.css') }}">
<?php endif; ?>

front.blade.php(引入逻辑正常无需修改)

<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
@include('frontend.includes.head')
@include('frontend.includes.styles')
</head>

错误原因

  • 原生PHP控制流写法错误:使用if(...) : endif的替代语法时,if语句末尾缺少必须的冒号:,导致PHP无法正常解析代码块,直接将PHP代码作为文本输出到前端页面。
  • Blade模板中混写原生PHP标签容易出现语法疏漏,优先使用Blade内置指令可大幅降低这类错误概率。

修复方案

推荐写法:使用Blade @if 指令

直接替换原有的原生PHP判断段,Blade会自动完成编译,语法更简洁不易出错,修正后完整style.blade.php代码如下:

<link rel="stylesheet" href="{{ asset('assets/vendor/libs/bootstrap/bootstrap.min.css') }}">
<link rel="stylesheet" href="{{ asset('assets/vendor/libs/fontawesome/fontawesome.min.css') }}">
<link rel="stylesheet" href="{{ asset('assets/vendor/libs/toastr/toastr.min.css') }}">
<link rel="stylesheet" href="{{ asset('assets/vendor/libs/simplebar/simplebar.min.css') }}">
<link rel="stylesheet" href="{{ asset('assets/css/extra/colors.css') }}">
<link rel="stylesheet" href="{{ asset('assets/css/extra/extra.css') }}">
@stack('styles_libs')
<link rel="stylesheet" href="{{ asset('assets/css/application.css') }}">
@stack('styles')
<link rel="stylesheet" href="{{ asset('assets/css/extra/custom.css') }}">
{{-- 阿拉伯语环境加载RTL样式 --}}
@if($language->code === 'ar')
<link rel="stylesheet" href="{{ asset('assets/css/rtl.css') }}">
@endif

可选优化:不依赖$language变量的通用判断

如果不想依赖视图传递的$language变量,可以直接调用Laravel的本地化方法获取当前语言代码判断,兼容性更强:

@if(app()->getLocale() === 'ar')
<link rel="stylesheet" href="{{ asset('assets/css/rtl.css') }}">
@endif

原生PHP修正写法(不推荐)

如果必须使用原生PHP语法,补全if语句后的冒号即可修复语法错误:

<?php if($language->code == "ar"): ?>
<link rel="stylesheet" href="{{ asset('assets/css/rtl.css') }}">
<?php endif; ?>

注意:front.blade.php中的模板引入逻辑没有问题,不需要做任何修改,修复style.blade.php中的判断语法后即可正常实现阿拉伯语环境下自动加载rtl.css的效果。


内容的提问来源于stack exchange,提问作者Yassin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 15:18:24