在Laravel视图中渲染的父占位符


  • Laravel版本:v8.41.0
  • PHP版本:8.0.5
  • Sail版本:v1.5.1

描述:

我有一个a.blade.php视图,它在body中包含一个类似的@yield指令

@yield('post_body_scripts')

然后,该视图包含在另一个视图中,b.blade.php,该视图保存post_body_scripts部分的数据

@extends('partials.layouts.app')
...
@include('c', ['foo' => 'bar'])
@section('post_body_scripts')
<script src="{{ asset('js/b.js') }}"></script>
@endsection

包含的c视图包含post_body_scripts部分的另一部分

@section('post_body_scripts')
@parent
<script src="https://cdn/ajsfile.js"></script>
@endsection

@pparent指令正常工作,但当视图的呈现启动时,会显示一个标签起始占位符

<?php $__env->startSection('post_body_scripts'); ?>
##parent-placeholder-1a5ac98c3addb84257eb2d5b7ffee8f1cbf3b352##
<script src="https://cdn/ajsfile.js"></script>
<?php $__env->stopSection(); ?><?php /**PATH /var/www/html/resources/views/c.blade.php ENDPATH**/ ?>

复制步骤:

  1. 创建一个包含@yield指令的基础视图
  2. 创建一个扩展前一个视图的视图,并对前一个yield使用@section指令
  3. 在点2创建的视图中包括另一个子视图
  4. 在第3点包含的视图中,对于声明的yield,使用@section指令,该指令以@pparent开头

更新

正如在评论中通知我的那样,我尝试使用@stack指令,但问题仍然存在。

a.blade.php

@stack('post_body_scripts')

b.blade.php

@push('post_body_scripts')
....
@endpush

c.blade.php

@push('post_body_scripts')
@parent
....
@endpush

删除@parent

@parent not use with @stack or @push

最新更新