how to use directive @push in blade template laravel how to use directive @push in blade template laravel laravel laravel

how to use directive @push in blade template laravel


You just need to make that the opposite way, @push is meant to be in the child view, which is pushing content to the parent @stack directive.

So your index.blade.php should have a:

@stack('custom-scripts')

And your child view:

@push('custom-scripts')    <script type="text/javascript" src="{{ URL::asset ('js/custom-scripts.js') }}"></script>@endpush

You can also use @parent directive with @section like this:

//index.blade.php@yield('scripts')//child.blade.php@section('scripts')    @parent    <!-- The rest of your scripts -->@endsection

If you need more info I'd recommend you to check the documentation. Hope this helped you.


Using @once might be also helpful for someone to prevent scripts from being executed more than once. You can define your root view to have a fixed place for scripts that should go at the end of the <head> tag and at the end of the <body> tag:

app.blade.php:

<html>  <head>    <title>Website</title>    @stack('head-scripts')  </head>  <body>    <main>@yield('content')</main>  @stack('body-scripts')  </body></html>

home.blade.php:

@extends('layouts.app')@section('content')    <div>Hello World</div>    @push('body-scripts')        @once        <script src="https://unpkg.com/imask"></script>        @endonce    @endpush@endsection