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