Laravel Blade:仅在扩展时给出变量时显示元标记

时间:2017-10-03 17:50:58

标签: php laravel-5

这是我的master.blade.php

的开头
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>@yield('title')</title>
    <meta name="description" content="@yield('meta_desc')">

如果我将此扩展到不会给出meta_desc的页面:

@extends('layouts.index')

@section('title')
A nice title
@endsection

此页面在标题中有一个带有空描述的元标记

<meta name="description" content="">

但是,当没有给出meta_desc时,我想完全跳过元标记。我尝试将master.blade.php中的代码更改为

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>@yield('title', )</title>
    @if(!empty($meta_desc))
    <meta name="description" content="@yield('meta_desc')">
    @endif 

但随后是元标记

<meta name="description" content="">

总会丢失。我该如何解决?

1 个答案:

答案 0 :(得分:1)

你可以做这样的事情

master.blade.php

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>@yield('title')</title>
    @if($metaDesc != "")
       <meta name="description" content="{{ $metaDesc }}">
    @endif

控制器

$metaDesc = "Testing";
        return view('test', compact('metaDesc'));

test.blade.php

@extends('layouts.master')

@section('title', 'Testing')

@section('content')
    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aspernatur consectetur eligendi esse id praesentium ullam! Alias asperiores, consectetur delectus, dicta facilis impedit itaque iure magni nisi odio perferendis tenetur ut!
@endsection

基本上我所做的就是将元描述变量传递给主布局,如果变量是“”,那么我们根本不会显示<meta> ..

如果有任何疑问,请随时联系。