路由模型绑定问题

时间:2019-04-15 15:04:57

标签: php laravel laravel-5

我有一组代码,它与我正在使用的其他代码相似,并且工作正常。只是在这种情况下,存在一些我无法找到原因的神秘问题。请参见下面的代码

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); } 可以正确打印数据。

在这种情况下,模型路由绑定可能是什么问题。我所有的控制器都使用模型路由绑定,而不是通常的方式,但这是我第一次遇到这个问题。

2 个答案:

答案 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');