I have two pages that are almost identical. One shows a list of users, the other shows the same list, but with more verbose information. So I am calling two views that extend the same wrapper. However, Laravel complains that $user is not defined in verbose.blade.php. I am passing $users to the view which seems to be available to content.blade.php but the $user that is created within the foreach loop doesn't seem to be accessible in verbose.blade.php.
verbose.blade.php
@extends('layout.content')
@section('user')
{{ dd($user) }}
@endsection
nonverbose.blade.php
@extends('layout.content')
@section('user')
{{ dd($user) }}
@endsection
content.blade.php
@extends('layout.app')
@section('content')
@foreach($users as $user)
@yield('user')
@endforeach
@endsection
I have also tried @yield('user', ['user' => $user])
How would I go about making $user available in verbose.blade.php?
Did you have tried to use @include?
You get that error because of the order that Laravel parses blade templates in.
Sometimes we programmers get so engrained in our "don't repeat yourself (DRY)" principle that we take it too far. This is one of those times -- you should simply put the foreach loop directly into verbose.blade.php: