2015-07-28 3 views
7

У меня есть две страницы, которые почти идентичны. Один показывает список пользователей, другой показывает тот же список, но с более подробной информацией. Итак, я вызываю два вида, которые расширяют одну и ту же оболочку. Тем не менее, Laravel жалуется, что $ user не определен в verbose.blade.php. Я передаю $ пользователям представление, которое, как представляется, доступно для content.blade.php, но пользователь $, созданный в цикле foreach, кажется, не доступен в verbose.blade.php.Laravel Blade @yield переменная область

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 

Я также попытался @yield('user', ['user' => $user])

Как я могу сделать доступным $ user в verbose.blade.php?

+0

просто из любопытства (я знаю, что это было бы исправить ошибку, но я не знаю, будет ли это решение) вы включили пользователя в качестве значения в вашей функции контроллера 'зрения возврата ('многословен ', compact (' users ',' user ')) '? –

+0

Я предполагаю, что у вашего контроллера есть что-то вроде 'return view ('verbose', compact ('users');' –

+0

Если это не Laravel 3, вы не должны использовать '@ endsection' вместо' @ stop'. – saadel

ответ

0

Вы получаете эту ошибку из-за того, что Laravel разбирает шаблоны лезвий в.

Иногда мы программисты получают так укоренился в нашем «не повторять себя (DRY)» принцип, что мы принимаем это слишком далеко. Это один из тех времен, - вы должны просто положить цикл Еогеасп непосредственно в verbose.blade.php:

@extends('layout.app') 

@section('content') 
    @foreach($users as $user) 
     @yield('user') 
    @endforeach 
@endsection 
+0

На самом деле есть больше информации внутри foreach в content.blade.php. Я бы предпочел не поместить все это внутри моего многословного клинка и невербального клинка. Но если это то, что я должен сделать, я сделаю это. – Votemike

2

Вы пытались использовать @include?

@include('user', ['user' => $user]) 
+0

Мне тоже нравится этот ответ. Если бы он сделал partials/user.blade.php, это сработало бы хорошо. –

+1

Если бы я сделал это так, как бы мне указать, нужно ли мне подробное или неполное частичное? мой вопрос не был ясен, мне нужно переключиться между двумя видами. Я уточню вопрос. – Votemike