Вывод названия выбранной категории laravel

155
18 ноября 2020, 12:30

Ребят подскажите как работает принцип вывода названия категории. Делал так, неполучилось, возможно неправильную таблицу создал в БД.

public function catalog_page($id)
{   
    $menus = Menu::all();
    $category = Menu::with('children')->find($id);
    return view('catalog_page', compact('menus','category'));
}

Menu - это модель, таблица, в которой такие поля - id, title, url, images

  //Вьюха
  <div class="content__right">
    <h1>{{$category->title}}</h1>
  </div>

dd($id); - выдает url выбранной категории.

  // Роут
  Route::get('/catalog/{id}', 'SiteController@catalog_page');

  // модель Menu
  namespace App;
 use Illuminate\Database\Eloquent\Model;
 class Menu extends Model
 {
  protected $table = 'menus';
 }
Answer 1

Первые этапы в подавляющем большинстве проектов на Laravel - это создать миграции, определиться со связями моделей и описать их, заполнить БД фейковыми данными (seed), определиться с маршрутами, создать контроллеры и только после этого переходить к выводу в шаблоны.

Нет необходимости создавать роут (маршрут) под вывод меню.

Представим, что у нас есть маршрут к странице категории с выводом информации о ней:

Route::get('/catalog/{id}', 'SiteController@catalog')->where('id', '[0-9]+');

В конструкторе контроллера извлекаем все меню:

protected $menus;
public function __construct()
{
  // Теперь коллекция всех менюшек
  // будет доступна из любого метода.
  $this->menus = Menu::all();
}
public function catalog($id)
{
  // Извлекаем текущую категорию из коллекции.
  // Из коллекции, не из БД!!!
  $category = $this->menus->find($id);
  // Распечатаем для наглядности.
  dump($category);
  // Если категории нет в коллекции, то выдаём 404.
  if(is_null($category)) {
    abort(404, 'Page not found');
  }
  return view('catalog', [
      'menus' => $this->menus,
      'category' => $category
    ]);
}

Теперь можно вывести текущую категорию и создать меню со всеми категориями в шаблоне:

{{-- catalog.blade.php --}}
<main class="main">
  <h1>{{ $category->title }}</h1>
</main>
<aside class="sidebar">
  <ul>
    @foreach ($menus as $item)
      <li>{{ $item->title }}</li>
    @endforeach
  </ul>
</aside>
READ ALSO
Не записываются данные в БД с применением jquery ajax php

Не записываются данные в БД с применением jquery ajax php

Подскажите, пожалуйста, почему не записываются данные с формы в БД? Вот код js

125
не передаются переменные из html в php

не передаются переменные из html в php

передаю две переменные в kat11php

107
Вопрос по редиректам

Вопрос по редиректам

Пробовал вhtaccess делать

121
construct calls parent construct

construct calls parent construct

при создании контроллера в laravel появляется вот такой кусочек кода вверху:

144