Laravel – передача значения во вложенную функцию

380
11 января 2017, 04:14

Хочу вывести в цикле изображения, привязанные к конкретному значению id из базы данных. Как мне передать в функцию значение id?

// Controller
public function index() {
    $news = DB::table('news')
                    ->where('posted', '=', 'true')
                    ->simplePaginate(10);
    $photo = $this->photo($news->id); // ошибка здесь
    return View::make('index')
                    ->with('news', $news)
                    ->with('photo', $photo);
}
public function photo($id) {
   if(file_exists($id.'.jpg')) {
       return $id;
   } else {
       return 'default';
   }
}

// View
@foreach ($news as $news_item)
   {{ $news_item->id }}
   <img src='{{ $photo }}.jpg'>
@endforeach
Answer 1

Конечно у вас ошибка вы пытаетесь взять id у объекта Paginator

1) Я бы советовал воспользоваться моделью и создать модель Article (и указать таблицу news)

2) Перенести логику обработки фото или получения пути в модель, например getPhotoPatch(), где вы уже сможете взять $this->id

тогда ваш контроллер будет выглядеть так:

public function index()
{
  $articles = Article::where('posted', '=', 'true')->paginate(10);
  return view('name')->with(compact('articles'))
}
@foreach($articles as $article)
  <img src="{{$article->getPhotoPatch()}}">
@endforeach
READ ALSO
Как изменить проверку кода в Netbeans?

Как изменить проверку кода в Netbeans?

Нетбинс говорит, что мол плохое значение для айди, поскольку у данного атрибута не должно быть пустых мест (whitespaces)Тоже самое происходит с name

391
Warning: Variable passed to each() is not an array or object [требует правки]

Warning: Variable passed to each() is not an array or object [требует правки]

В панели управления сайтом появилась вот такая ошибка:

408
Заменить часть строки массива php

Заменить часть строки массива php

ЗдравствуйтеВ интернете есть туча примеров как заменить значения одного массива на другое

512