Laravel:仅在使用某些Blade布局视图时包含一些js,而不包括其他js

时间:2017-07-16 00:19:38

标签: laravel include laravel-5.3 blade

在Laravel环境中,我有一个js.blade.php(包含在我的所有布局视图中),包含全局javascript文件和一些@yield占位符,如下所示

<!-- BEGIN CORE PLUGINS -->
<script src="//code.jquery.com/jquery-1.12.4.min.js"></script>
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="//cdn.jsdelivr.net/ie10-viewport/1.0.0/ie10-viewport.min.js"></script>
<!-- END CORE PLUGINS -->
<!-- BEGIN PAGE LEVEL PLUGINS -->
@yield('js-plugins')
<!-- END PAGE LEVEL PLUGINS -->
<!-- BEGIN SOME OTHER GENERAL PLUGINS -->
<script src="//cdn.jsdelivr.net/dummy1.min.js"></script>
<script src="//cdn.jsdelivr.net/dummy2.min.js"></script>
<!-- END SOME OTHER GENERAL PLUGINS -->
<!-- BEGIN PAGE LEVEL SCRIPTS -->
@yield('js-scripts')
<!-- END PAGE LEVEL SCRIPTS -->
<!-- BEGIN SCRIPTS TO BE RENDERED ONLY IN SOME LAYOUT VIEWS -->
...
<!-- END SCRIPTS TO BE RENDERED ONLY IN SOME LAYOUT VIEWS -->
<!-- BEGIN MY CUSTOM SCRIPTS -->
<script src="{{ asset('backend/scripts.js') }}"></script>
<!-- END MY CUSTOM SCRIPTS -->

你看到<!-- BEGIN SCRIPTS TO BE RENDERED ONLY IN SOME LAYOUT VIEWS -->部分了吗?在这里,我应该有master.blade.php布局视图中的脚本(用户登录时用于大多数页面)但不在,unlogged.blade.php布局视图(用于登录,或检索丢失的密码,或者涉及非登录用户的所有其他内容):我的意思是,即属于侧边栏导航的脚本(当然是在“内部”页面中,而不是在“外部”页面中)

那么,我怎么能告诉Laravel“在使用master.blade.php视图时,在...部分放置一些脚本,否则保持原样”?目标是仅利用js.blade.php视图来保持DRY

我在@push@stacks采取了行动,但他们不清楚,我不知道我是否能以某种方式使用它们

由于

1 个答案:

答案 0 :(得分:0)

在这种情况下,使用 if 语句和 @include 代替@yield

<强> js.blade.php

<!-- BEGIN SCRIPTS TO BE RENDERED ONLY IN SOME LAYOUT VIEWS -->
@if(!isset($limit) || (isset($limit) && !$limit))
    <script src="{{asset('js/home.js')}}"></script>
@endif
<!-- END SCRIPTS TO BE RENDERED ONLY IN SOME LAYOUT VIEWS -->

<强> master.blade.php

@include('js')

unlogged.blade.php(您不想在此处呈现某些脚本)

@include('js',['limit'=>true])

完整示例:https://github.com/jaredchu/laravel-dynamic-view-example/tree/master/resources/views