![](/img/trans.png)
[英]Laravel Explicit route model binding issue in RouteServiceProvider
[英]Route model binding issue
我有一组代码,它与我正在使用的其他代码相似,并且工作正常。 只是在这种情况下,存在一些我无法找到原因的神秘问题。 请看下面的代码
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
将打印在网页上。 我什至尝试重新启动系统。 没有出路。
我删除了Model Route Binding,并尝试了通常的方法,
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
正确打印数据。
在这种情况下,模型路由绑定可能是什么问题。 我所有的控制器都使用模型路由绑定,而不是通常的方式,但这是我第一次遇到这个问题。
https://laravel.com/docs/5.5/routing#implicit-binding
Route::get('blog/category/{category}','BlogPostController@category')->name('blog.category');
来自: 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', App\Category::class);
}
而且您仍然可以使用:
Route::get('blog/category/{cat}','BlogPostController@category')->name('blog.category');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.