问题描述
为什么@yield('script')
不起作用?
我在这样的PHP laravel Blade master.blade.php 文件中创建布局
@include('layouts.header')
@include('layouts.sidebar')
<div class="main-panel">
<!-- Navbar -->
@include('layouts.navbar')
<!-- End Navbar -->
<div class="content">
<div class="container-fluid">
@yield('content')
</div>
</div>
</div>
</div>
@include('layouts.footer')
我在@yield('script')
中添加了layouts.footer
,以使用@section('script')编写脚本代码。
layouts.footer 文件
....
<script src="{{ asset('./assets/js/core/jquery.min.js') }}"></script>
@yield('script')
...
</body>
</html>
当我在刀片页面中使用section('script')
时不起作用
我这样使用@yield('script')
@extends('layouts.master')
@section('content')
<div>
<button class="btn btn-sm btn-outline-primary" id="modal">
Sponsored
</button>
</div>
@endsection
// JQuery code
@section('script')
<script>
$(document).on("click","#modal",function () {
alert('hello world');
});
</script>
@endsection
解决方法
Blade允许您推送到可以在另一个视图或布局中其他位置呈现的命名堆栈。这对于指定子视图所需的任何JavaScript库特别有用:
这是include
和scripts
的错误方式。
您可以使用links
。有关stack
layouts.footer 文件
@stack
刀片文件
<script src="{{ asset('./assets/js/core/jquery.min.js') }}"></script>
@stack('script')