gpt4 book ai didi

laravel - Blade 继承模板中的相同部分名称

转载 作者:行者123 更新时间:2023-12-02 16:28:34 25 4
gpt4 key购买 nike

假设我有三个 Blade 模板:A、B 和 C。模板 A 是全局布局,模板 B 是某些特定部分的布局,模板 C 是 View 模板。

模板 A 和 B 期望分配一个名为 content 的部分。该部分在 View 模板 (C) 中定义。

这是模板 A 和 B 的简化版本:

模板A:

<html>
<body>
@yield('content')
</body>
</html>

模板B:

@extends('template_a')

@section('content')
<div class="sidebar">
...
</div>
<div class="content">
@yield('content')
</div>
@endsection('content')

如您所见,两个模板都输出一个 content 部分。我的问题是,在扩展 B 的 View 中,它的内容被简单地忽略。 View 中定义的 content 部分在模板 A 中的 @yield('content') 上输出。

我想知道是否可以在 View 层次结构中向上传播 content 部分,即将模板 B 中的内容占位符替换为模板 C 中定义的值,并替换导致模板 A 中的 content 占位符。

抱歉,如果我让这听起来太困惑了。我希望你能明白我的想法。

提前致谢。

最佳答案

我在这里找到了您问题的答案:https://laracasts.com/discuss/channels/laravel/trouble-with-blade-section-inheritance?page=1

技巧是在同名 @section 内包含 @yield 的 Blade 中使用 @overwrite 而不是 @endsection。

@extends('app')
@section('content')
{{--Some common code--}}
@yield('content')
@overwrite

使用 @endsection 会导致生成的 View 覆盖中间 View ,但使用 @overwrite 会强制一路包含。

在我看来,令人困惑的是,在传统编程中,使用父类(super class)方法的指令放在子类中(从子类调用父类(super class)方法),而在 Laravel Blade 继承中,它必须放在父类(super class)中本身(父类(super class)在其自身内部声明它在被重写时不能被忽略)。

关于laravel - Blade 继承模板中的相同部分名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36073440/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com