Leff Leff - 1 month ago 13
PHP Question

Laravel - passing data from master blade to partial doesn't work for all views

I am trying to pass data from my master blade to the partial depending where it is open. This is part of my master blade:

<div id="main-section">
@section('topBar')
@include('customer.layouts.partials.top-bar')
@show

@section('header')
@include('customer.layouts.partials.header')
@show

@section('carousel')
@include('customer.layouts.partials.carousel', ['function' => 'drawer'])
@show
</div>

<div id="drawer">
<div id="item-detail">
</div>
<div id="item-detail-carousel">
@section('carousel')
@include('customer.layouts.partials.carousel', ['function' => 'itemDetail'])
@show
</div>
</div>


So, as you can see I am using
customer.layouts.partials.carousel
in two places.
I am receiving data in my partial like this:

<div class="swiper-container {{ $function }}">
<div class="swiper-wrapper">
@foreach($issues as $issue)
<div class="swiper-slide">
<img
src="/imagecache/large/{{ $issue->first()->image }}"
onclick="{{ $function }}(
'{{ $issue->first()->magazine->id }}',
'{{ $issue->first()->magazine->name }}',
'{{ $issue->first()->magazine->summary ?: '' }}',
'{{ $issue->first()->magazine->image ?: '' }}',
'{{ $issue->first()->image }}'
)"
>
</div>
@endforeach
</div>
</div>


Div
#drawer
is hidden first, has
display:none
, and it is shown on click on an image in the slider in the
main-section
. And then
#drawer
gets slides over the
main-section
. But when I inspect the elements in the chrome I see that both in the
main-section
and in the
drawer
section, data that was passed is
drawer
. The
#drawer
didn't get data
['function' => 'drawer']
as I thought it would.
How can I achieve that?

Answer

I think you're misunderstanding how the @section directive is meant to work.

For starters, you shouldn't have multiple @section directives with the same name (think of it like ids with HTML - there should only be one with that name). Also, if your not going to be extending files with @extend there isn't much point in using @section at all.

If you remove the @section directives from around your @include('...') then they should work fine.

Hope this helps!

Comments