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,请问这个该怎么理解?
谢谢!

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

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

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

5年前 评论
讨论数量: 9

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

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

5年前 评论

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

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

5年前 评论
shebaoting 5年前

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

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

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

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

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

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

3年前 评论

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