how to use directive @push in blade template laravel

kuka picture kuka · Jun 21, 2017 · Viewed 22.7k times · Source

I need script only on one page. and it should load after jQuery. I tried in index.blade

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

and then I should use @stack('custom-scripts') in my view?

Answer

Asur picture Asur · Jun 21, 2017

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.