【发布时间】:2018-12-21 05:53:54
【问题描述】:
我是 laravel 的初学者。当我在处理它的资源控制器的方法时,我发现路由名称和参数传入方法有奇怪的关系。请让我解释一下:
示例 1: 在 web.php 中:
Route::resource('users','UsersController');
在 Userscontroller.php 中:
public function show(Users $user)
{
var_dump($user->name); exit; //returning name
}
示例 2: 在 web.php 中:
Route::resource('users','UsersController');
在 Userscontroller.php 中:
public function show(Users $users)
{
var_dump($users->name); exit; //null i.e. plain object returned
}
示例 3: 在 web.php 中:
Route::resource('usrss','UsersController');
在 Userscontroller.php 中:
public function show(Users $usrss)
{
var_dump($usrss->name); exit; //returning name
}
示例 4: 在 web.php 中:
Route::resource('usrss','UsersController');
在 Userscontroller.php 中:
public function show(Users $usrs)
{
var_dump($usrs->name); exit; //returning null
}
注意:它也适用于其他方法:如编辑、销毁等
所以我很困惑和好奇,laravel 期望我们设置传递给资源控制器方法的对象名称。我想启动我们可以给任何名字的对象,但我猜 laravel 对此有一些限制。我也用谷歌搜索过,但没有得到满意的答案。请帮我清除这个。
PS:由于格式错误警告,stackoverflow 不接受我的代码,但我的格式正确,所以我按原样发布。
我不明白 stackoverflow 是为了帮助我们解决疑虑,而且人们很容易投反对票。由于这种行为,新用户帐户可能会被阻止。请支持他们。
【问题讨论】:
-
我认为你不能在 show() 中传递 User 对象,只需在 show() 中传递 $id
-
我不明白 stackoverflow 是为了帮助我们解决疑虑,而且人们很容易投反对票。由于这种行为,新用户帐户可能会被阻止。请支持他们。