Laravel по-русски

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

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

#1 15.06.2014 15:50:28

Дима

Помогите решить обработки данных во views

Доброго времени суток!

Возникла проблема, связанная с тем, что результат работы функции передаётся из контроллера в представление не в виде массива. Вследствие чего, возникает "Invalid argument supplied for foreach()" при попытке сделать @foreach.
Знаний у меня мало, не могу догнать, как уйти от этой проблемы.
Ниже представлены куски кода контроллера и вьюхи.

Заранее спасибо за ответы!

Кусок кода из контроллера:

foreach($channels as $channel) {
			$current = Programm::select('start', 'name')
				->where('channel_id', $channel->id)
				->current()
				->first();
			
			if($current) {
				$channel->current = $current;
				
				$future = Programm::select('start', 'name')
					->where('channel_id', $channel->id)
					->future()
					->limit(4)
					->get();
				if($future) {
					$channel->future = $future;
				}
				
			}
		}

		return $channels;

Кусок кода из представления:

@foreach($tv as $item)
                            <div class="col-sm-6 col-md-4">
                                <div class="channel">
@if(isset($item->image))
                                    <a href=""><img src="{{Config::get('images.static_server')}}/assets/images/{{$item->image->Name}}-tvsmall.jpg" alt="{{{$item->title}}}" /></a>
@endif
                                    <h3><a href="//{{$menu['tv']['link']}}/{{$item->url}}/">{{{$item->title}}}</a></h3>
                                    <ul>
                                        <li class="current" title="Сейчас в эфире"><span class="time">{{date('H:i', $item->current['sec'])}}</span><span class="program">{{$item->current['name']}}</span></li>
                                        @foreach($item->future as $future)
                                        <li><span class="time">{{date('H:i', $future->start->sec)}}</span><span class="program">{{$future->name}}</span></li>
                                        @endforeach
                                    </ul>
                                </div>
                            </div>
@if($i++%2 == 0)
                            <div class="clearfix visible-sm"></div>
@elseif($i++%3 == 0)
                            <div class="clearfix visible-md visible-lg"></div>
@endif
@endforeach

#2 15.06.2014 16:09:23

Re: Помогите решить обработки данных во views

Не понятно, как именно создаётся View? Что туда передаётся? array('tv' => $channels)?

Не в сети

#3 15.06.2014 16:15:17

Дима

Re: Помогите решить обработки данных во views

Proger_XP пишет:

}%Не понятно, как именно создаётся %%View%%? Что туда передаётся? %%array('tv' => $channels)%%?

Действительно, забыл указать ))

Основная функция в контроллере, выводящяя вьюху делает так:

$data['tv'] = $this->displayTV(); // это вызов той функции с $channels
return View::make('layouts.main', $data);

#4 15.06.2014 16:59:49

Дима

Re: Помогите решить обработки данных во views

Proger_XP, спасибо за желание помочь. Я разобрался, оказывается проблема была в том, что $future у меня заполнялся только если заполнился $current. А выяснилось, что однажды в $current оказалось пусто )))

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