route ('users.show', $user->id) 发生什么?

想请问一下<a href="{{ route('users.show', $user->id) }}">这行发生了什么?
因为Route::get('/users/{user}', 'UsersController@show')->name('users.show');,所以上面一行调用了UsersControllershow(User $user)这个方法,这个是否正确?
但是后面好像传了个参数$user->idshow(User $user)。这个参数是id,但是show(User $user)接受的是User,不是id,请问这个该怎么理解?
谢谢!

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

请阅读文档,路由里面有一节是 路由模型绑定

当向路由或控制器行为注入模型 ID 时,就需要查询这个 ID 对应的模型。Laravel 为路由模型绑定提供了一个直接自动将模型实例注入到路由中的方法。例如,你可以注入与给定 ID 匹配的整个 User 模型实例,而不是注入用户的 ID。

4年前 评论
讨论数量: 9

请阅读文档,路由里面有一节是 路由模型绑定

当向路由或控制器行为注入模型 ID 时,就需要查询这个 ID 对应的模型。Laravel 为路由模型绑定提供了一个直接自动将模型实例注入到路由中的方法。例如,你可以注入与给定 ID 匹配的整个 User 模型实例,而不是注入用户的 ID。

4年前 评论

Blade模板中的 route('users.show', $user->id) ,对应的路由为
Route::get('/users/{user}', 'UsersController@show')->name('users.show');

$user->id 为需查询用户实例的id参数,这样传递到控制器方法show的就是对应用户ID的模型实例。
public function show(User $user)

Laravel

如有不对的理解,请大家指正。

4年前 评论
shebaoting 4年前

路由模型绑定
生成指向命名路由的 URL

在后续课程中能看到如下解释:

redirect()->route('users.show', [$user]);

注意这里是一个『约定优于配置』的体现,此时 $userUser 模型对象的实例。route() 方法会自动获取 Model 的主键,也就是数据表 users 的主键 id,以上代码等同于:

redirect()->route('users.show', [$user->id]);
3年前 评论

Target class [StaticPagesController] does not exist.怎么办

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!