laravel刀片模板-如何从扩展页面中删除一个部件

ddrv8njm  于 2022-12-14  发布在  其他
关注(0)|答案(3)|浏览(115)
  • 注意:就像我在评论中说的,我正在做一个相对较大的项目。我不能改变现有的代码。只是试着为一个页面添加一些代码块。*

我有一个模板blade。它有 metayield。但也包含了一个meta.blade.php,它包含了所有的meta标签。但我不想在我的一些页面中包含metapage。有一个可视化的模板:

我的模板

<header>
    @yield('meta')
    @include('metapage')

    @yield('style')
    @yield('js')
</header>

我的观点.blade.php

@extends('my_template')

@section('meta')
    <meta description...>
@endsection

@section('style')
    //content
@endsection

@section('js')
    //content
@endsection

我的问题是:有没有办法做出这样的东西:

@extends('my_template')->except('metapage')

我知道不存在这样的事情,但我需要这样的事情,我希望有人能给予我一个解决办法。

bnl4lu3b

bnl4lu3b1#

有一个确定的解决方案,我做:

  • 第一种是创建多个模板并根据需要扩展它们。
  • 第二个是禁用子部件。
  • 第三个创建父模板有一些小的东西,然后创建子模板,这是扩展父和做额外的事情在这里。使用它作为您的需要。

如果你正在处理现有的项目,你有很多页面,那么第一个和第三个是一个更好的解决方案,因为你可以只在前端进行更改,而不会影响类代码。

ltqd579y

ltqd579y2#

您可以将 meta设置为组件而不是include,这样您的模板看起来就相同了,您的视图将是例如。

@extends('my_template')

@section('meta')
    @component('meta')
        @slot('description', 'my amazing description')
    @endcomponent
@endsection

// other code here as usual

然后,您的组件负责检查哪些存在,哪些不存在,例如:

@isset($description)
    <meta name="description" content="{{ $description }}">
@endisset

@isset($title)
    <title>{{ $title }}</title>
@endisset

// etc, the title is just an example

文件:https://laravel.com/docs/5.6/blade#components-and-slots

at0kjp5o

at0kjp5o3#

获取要忽略的标记名称并应用CSS,例如:如果我需要从扩展页面中删除页脚,请使用

footer {
    display: none;
}

相关问题