Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Здравствуйте. Имеется примерно такой код
return view('child', compact($items));
// Родительский файл master
@foreach($items as $item)
// код
@yield('content')
// код
@endforeach
// Дочерний файл child
@extends('master')
@section('content')
{{ $item->id }}
@endsection
Родительский файл для нескольких страниц одинаковый, а вот дочерний меняется. При таком варианте получаю ошибку что $item не определена. Как можно по другому решить эту проблему?
Не в сети
Наверное $items а не $item не определена в master. Передать параметр в лейаут шаблон можно так:
@extends('master', ['items' => $items])
или можно сделать $items какбы глобальным в шаблонах:
View::share('items', $items);
return view('child');
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
Не, именно $item.
Дело в том, что $items получается из отношения. И перебор этого массива идет именно в родительском шаблоне. А каждый элемент мне нужен с дочернем. И ошибка идет от дочернего файла. Поэтому $items я так передать не могу.
Не в сети
Ага, сейчас понятно. Думаю так не получится. Yield не получает скоуп "родителя" и в него нельзя передать параметр.
Можно использовать @include с параметром. Либо получать $item через вью композер. И то и другое потребует больших переделок. Sorry
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
Ну инклуд тоже не лучший вариант. Придется делать иф, а потом еще и еще. Хотя я пока так и сделал. Странно что данный вариант не предусмотрен, неужели никого раньше данная проблема не интересовала... Спасибо за помощь.
Не в сети
Страницы 1