Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 27.01.2016 18:41:32

Передать массив данных в индклюд шаблона

Всем привет, возник не большой затык:
У меня есть индклюд который я вставляю в шаблон для вывода списка категорий, категории хранятся в базе, я создал метов контроллера:

public function getCategories()
{
	$categories_list = BlogCategories::where('active', '1')->orderBy('category_id')->get();
	return view('front.layouts.BlogTemplate', [ 'categories_list' => $categories_list ]);
}

В файле front.layouts.BlogTemplate в который я передаю массив данных:

@include( 'front.layouts.includes.categories-menu', ['cat_list' => $categories_list])

И уже я принимаю всё в последнем файле в front.layouts.includes.categories-menu:

@if(count($cat_lists) > 0)
<ul>
@foreach($cat_lists->all() as $cat_list)

<li><a href="{{ URL::action('BlogController@getCategory', ['category' => $cat_list->slug]) }}"><i class="fa fa-caret-right"></i> {{ $cat_list->title }}</a></li>

@endforeach
</ul>
@endif

И всё это выдаёт мне ошибку: Undefined variable: categories_list
Что означает эта ошибка я понимаю, не понимаю почему она возникает. Подскажите чего я не вижу, и вообще правильно я решаю такую задачу?

Не в сети

#2 28.01.2016 10:40:31

duster
Откуда: Мельбурн
Сообщений: 148

Re: Передать массив данных в индклюд шаблона

Ну вообще, на дочерние шаблоны, включенные через @include - и так все данные от родителя передаются, поэтому достаточно:

@include('front.layouts.includes.categories-menu')

Вот чего я не понимаю - метод getCategory() это настоящая отдельная страница? Или Вы таким образом думали передать список категорий?

Не в сети

#3 28.01.2016 12:20:27

Re: Передать массив данных в индклюд шаблона

duster пишет:

Ну вообще, на дочерние шаблоны, включенные через @include - и так все данные от родителя передаются, поэтому достаточно:

@include('front.layouts.includes.categories-menu')

Вот чего я не понимаю - метод getCategory() это настоящая отдельная страница? Или Вы таким образом думали передать список категорий?

Да я таким образом пытаюсь передать список категорий, просто я ничего умнее не придумал чем создать метод, очень сильно избегал логики в видах. Подскажите каким способом ещё можно вывести список категорий?

Не в сети

#4 28.01.2016 20:43:45

Re: Передать массив данных в индклюд шаблона

Помогите кто-нибудь.

Не в сети

#5 29.01.2016 00:06:59

Re: Передать массив данных в индклюд шаблона

нестыковочка

@include( 'front.layouts.includes.categories-menu', ['cat_list' => $categories_list])

и

@if(count($cat_lists) > 0)

+
ссылки генери напрямую, прямым и понятным способом, без вывертов туда, где поменяешь и сдохнешь искать, причины неработоспособности скриптов.

{{URL::secure('твоя ссылка в том виде, как ожидаешь её видеть на морде со всеми конкатинациями')}}

Не в сети

#6 29.01.2016 12:39:35

Re: Передать массив данных в индклюд шаблона

Я уже перебрал все имена переменной и тд, думал конфликт, в данный момент у меня с названием переменных всё ок. Проблема в другом:
Подскажите каким способом ещё можно вывести список категорий?

Не в сети

#7 29.01.2016 16:31:02

Re: Передать массив данных в индклюд шаблона

Контроллером возвращаешь страницу.
Из шаблона дёргаешь модель В foreach

Не в сети

#8 29.01.2016 19:18:06

Re: Передать массив данных в индклюд шаблона

Я тебя не совсем понял.
Сделал так в шаблоне @foreach(App\BlogCategories::where('active', '1')->orderBy('category_id')->get() as $cat_list)
Так работает но мне кажется это не совсем верно, прав ли я?

Не в сети

#9 30.01.2016 03:54:30

duster
Откуда: Мельбурн
Сообщений: 148

Re: Передать массив данных в индклюд шаблона

Killing пишет:

Я тебя не совсем понял.
Сделал так в шаблоне @foreach(App\BlogCategories::where('active', '1')->orderBy('category_id')->get() as $cat_list)
Так работает но мне кажется это не совсем верно, прав ли я?

Если сайт маленький - то в принципе можно так и оставить.

А вообще, лучше в контроллер это убрать и в шаблон уже просто массив передать.

Не в сети

Подвал раздела