#php #laravel #laravel-5
#php #laravel #laravel-5
Вопрос:
У меня есть набор кода, он похож на другие коды, которые я использую, и они работают нормально. Просто в этом случае есть какая-то загадочная проблема, причину которой я не могу найти. Пожалуйста, посмотрите код ниже
BlogPostController.php
public function category(Category $category){
return view('blog/cat')->with('categories',$category);
}
categories.blade.php
@extends('layouts.blog')
{{$categories->name}}
Он category.blade
не выводится {{$categories->name}}
. Ошибки не отображаются. Если я изменю {{$categories->name}}
и введу обычный текст, например data
, тогда data
он будет напечатан на веб-странице. Я даже пытался перезапустить свою систему. Здесь нет никакого выхода.
Я удалил привязку маршрута модели и попробовал обычный способ ,
public function category($id){
$category = Category::where('id',$id)->first();
return view('blog/cat')->with('categories',$category);
}
РЕДАКТИРОВАТЬ
МАРШРУТ — web.php
Route::get('blog/category/{cat}','BlogPostController@category')->name('blog.category');
В этом случае программа category.blade.php
печатает данные правильно.
В чем может быть проблема с привязкой модельного маршрута в этом случае? Все мои контроллеры используют привязку маршрута модели, а не обычным способом, но я впервые сталкиваюсь с этой проблемой.
Комментарии:
1. Добавьте
Log::info($category);
выше представление возврата, затем проверьте свои журналы,storage/logs/
чтобы увидеть, что он распечатал.2. Пожалуйста, отправьте свой маршрут на этот контроллер, и я обновлю свой ответ исправленной версией.
Ответ №1:
From: laravel.com/docs/5.8/routing#route-model-binding
Неявная привязка
Laravel автоматически разрешает красноречивые модели, определенные в маршрутах или действиях контроллера, имена переменных с указанием типа которых соответствуют имени сегмента маршрута.
Поэтому попробуйте сделать:
Route::get('blog/category/{category}','BlogPostController@category')->name('blog.category');
Явная привязка
Чтобы зарегистрировать явную привязку, используйте метод model маршрутизатора, чтобы указать класс для заданного параметра. Вы должны определить свои явные привязки модели в методе загрузки класса RouteServiceProvider
Или используйте явную привязку
RouteServiceProvider.php
public function boot()
{
parent::boot();
Route::model('cat', AppCategory::class);
}
И вы все еще можете использовать:
Route::get('blog/category/{cat}','BlogPostController@category')->name('blog.category');
Ответ №2:
https://laravel.com/docs/5.5/routing#implicit-binding
Route::get('blog/category/{category}','BlogPostController@category')->name('blog.category');
Комментарии:
1. Спасибо. Это была новая информация. И это сработало.