NotFoundHttpException in RouteCollection.php

123
22 ноября 2020, 08:00

Не получается вывести заголовки категорий Laravel.

Маршрут:

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

Контроллер:

class SiteController extends Controll
{ 
  protected $menus;
  public function __construct()
  {
    // Коллекция всех менюшек.
    $this->menus = Menu::all();
  }
  public function catalog_page($id)
  {
    // Извлекаем текущую категорию из коллекции.
    $category = $this->menus->find($id);
    // Если категории нет в коллекции, то выдаём 404.
    if(is_null($category)) {
      abort(404, 'Page not found');
    }
    return view('catalog_page', [
      'menus' => $this->menus,
      'category' => $category
    ]);
  }
}

Шаблон catalog_page:

<div class="content__right">
  <h1>{{ $category->title }}</h1>
</div>

При переходе на страницу выдает ошибку:

(1/1) NotFoundHttpException in RouteCollection.php line 179

Answer 1

Вы опять не указали версию Laravel.

Ошибка NotFoundHttpException in RouteCollection.php говорит о том, что не найден запрашиваемый маршрут (роут).

Решение: убедитесь, что вы действительно переходите/запрашиваете необходимую страницу по адресу, например, /catalog/{id}, а не '/catalog/{alt}' или '/catalog/{slug}'.

Помимо этого, довольно часто ошибка возникает, когда при изменении маршрута в кэше хранится старые версии маршрутов. Их очистку и повторное кэширование можно выполнять через командную строку, либо вручную удалить все файлы в папке bootstrap\cache, кроме .gitignore: так как в этой папке также хранятся кэши.

Небольшой список команд по очистке.

1 Очистка компилированных шаблонов в папке \storage\framework\views:

php artisan view:clear

2 Очистка файлов фасада Cache в папке \storage\framework\cache\data:

php artisan cache:clear

3 Очистка и кэширование файла конфигурации \bootstrap\cache\config.php:

php artisan config:cache

4 Очистка и кэширование файла маршрутов \bootstrap\cache\routes.php:

php artisan route:cache

Также данные команды можно вызывать из приложения, например, в одном из контроллере вашей админ. панели:

// php
Artisan::call('route:cache');

Итог: если вы вносите изменения в файлы из папки config, то необходимо выполнить config:cache; внесли изменения в маршруты - route:cache.

READ ALSO
Написать функцию на PHP

Написать функцию на PHP

Создать 3 переменныеДве из них должны содержать число

106
При запуске php artisan db:seed выбивает ошибку [закрыт]

При запуске php artisan db:seed выбивает ошибку [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

112
Обращение к массиву

Обращение к массиву

Есть массив данных, который я извлекаю с БД

115