繁体   English   中英

路由模型绑定问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM