我有一组代码,它与我正在使用的其他代码相似,并且工作正常。只是在这种情况下,存在一些我无法找到原因的神秘问题。请参见下面的代码
BlogPostController.php
List((plans: Option[]))
categories.blade.php
class ComplexOption implements Option {
id: string
name: string
}
const complexOptions: ComplexOption[] = []
List(complexOptions)
public function category(Category $category){
return view('blog/cat')->with('categories',$category);
}
不输出 @extends('layouts.blog')
{{$categories->name}}
。没有显示错误。如果我更改category.blade
并输入普通文本,例如{{$categories->name}}
,则{{$categories->name}}
会打印在网页上。我什至尝试重新启动系统。没有出路。
我删除了模型路由绑定,并尝试了通常的方法,
data
编辑 路线-web.php
data
在这种情况下,public function category($id){
$category = Category::where('id',$id)->first();
return view('blog/cat')->with('categories',$category);
}
可以正确打印数据。
在这种情况下,模型路由绑定可能是什么问题。我所有的控制器都使用模型路由绑定,而不是通常的方式,但这是我第一次遇到这个问题。
答案 0 :(得分:3)
https://laravel.com/docs/5.5/routing#implicit-binding
Route::get('blog/category/{category}','BlogPostController@category')->name('blog.category');
答案 1 :(得分:3)
发件人: 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');