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

Laravel 5.6 Blade中如何设置页面描述(带默认值)

在Laravel Blade中实现Meta描述的默认值/自定义值切换

嘿,我来帮你搞定这个问题~其实Blade提供了几种简洁可靠的方式来实现你要的逻辑,比你之前尝试的写法更清晰:

方法1:利用@yield的默认值参数(最简洁)

Blade的@yield指令本身就支持第二个参数作为默认值,完美匹配你的需求!直接这么写就行:

<meta name="description" content="@yield('description', config('app.description'))">
  • 当你在子视图中通过@section('description', '这里是自定义描述内容')传递自定义描述时,页面会显示你设置的自定义内容;
  • 如果没有定义这个description section,就会自动使用配置文件config/app.php里的description配置项作为默认值。

方法2:用@hasSection判断(适合需要额外逻辑的场景)

如果你需要更灵活的判断(比如加一些额外的条件),可以用@hasSection指令来检查是否存在指定的section:

<meta name="description" content="@hasSection('description')@yield('description')@else{{ config('app.description') }}@endif">

方法3:通过控制器传递变量的场景

如果你的自定义描述是从控制器传递到视图的变量(比如$description),可以用@isset或者@if来判断:

<!-- 用@isset判断变量是否存在且不为空 -->
<meta name="description" content="@isset($description){{ $description }}@else{{ config('app.description') }}@endisset">

<!-- 或者用@if判断 -->
<meta name="description" content="@if(!empty($description)){{ $description }}@else{{ config('app.description') }}@endif">

纠正你之前的写法问题

你之前尝试的@if(yield('descrption'))@yield('descrption'):{{config('app.description')}}写法有两个问题:

  1. @yield不能直接作为@if的判断条件,应该用@hasSection来检查section是否存在;
  2. 语法结构不完整,缺少闭合的@endif,而且冒号的用法也不对。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 07:02:30