Php Laravel资源控制器';s的方法表现得很奇怪
我是拉威尔的初学者。当我研究它的资源控制器的方法时,我发现路由名称和参数pass-in方法有着奇怪的关系。请让我解释一下: 示例1: 在web.php中:Php Laravel资源控制器';s的方法表现得很奇怪,php,laravel,Php,Laravel,我是拉威尔的初学者。当我研究它的资源控制器的方法时,我发现路由名称和参数pass-in方法有着奇怪的关系。请让我解释一下: 示例1: 在web.php中: Route::resource('users','UsersController'); Route::resource('users','UsersController'); Route::resource('usrss','UsersController'); Route::resource('usrss','UsersContro
Route::resource('users','UsersController');
Route::resource('users','UsersController');
Route::resource('usrss','UsersController');
Route::resource('usrss','UsersController');
在Userscontroller.php中:
public function show(Users $user)
{
var_dump($user->name); exit; //returning name
}
public function show(Users $users)
{
var_dump($users->name); exit; //null i.e. plain object returned
}
public function show(Users $usrss)
{
var_dump($usrss->name); exit; //returning name
}
public function show(Users $usrs)
{
var_dump($usrs->name); exit; //returning null
}
示例2:
在web.php中:
Route::resource('users','UsersController');
Route::resource('users','UsersController');
Route::resource('usrss','UsersController');
Route::resource('usrss','UsersController');
在Userscontroller.php中:
public function show(Users $user)
{
var_dump($user->name); exit; //returning name
}
public function show(Users $users)
{
var_dump($users->name); exit; //null i.e. plain object returned
}
public function show(Users $usrss)
{
var_dump($usrss->name); exit; //returning name
}
public function show(Users $usrs)
{
var_dump($usrs->name); exit; //returning null
}
示例3:
在web.php中:
Route::resource('users','UsersController');
Route::resource('users','UsersController');
Route::resource('usrss','UsersController');
Route::resource('usrss','UsersController');
在Userscontroller.php中:
public function show(Users $user)
{
var_dump($user->name); exit; //returning name
}
public function show(Users $users)
{
var_dump($users->name); exit; //null i.e. plain object returned
}
public function show(Users $usrss)
{
var_dump($usrss->name); exit; //returning name
}
public function show(Users $usrs)
{
var_dump($usrs->name); exit; //returning null
}
示例4:
在web.php中:
Route::resource('users','UsersController');
Route::resource('users','UsersController');
Route::resource('usrss','UsersController');
Route::resource('usrss','UsersController');
在Userscontroller.php中:
public function show(Users $user)
{
var_dump($user->name); exit; //returning name
}
public function show(Users $users)
{
var_dump($users->name); exit; //null i.e. plain object returned
}
public function show(Users $usrss)
{
var_dump($usrss->name); exit; //returning name
}
public function show(Users $usrs)
{
var_dump($usrs->name); exit; //returning null
}
注意:它也适用于其他方法:如编辑、销毁等
所以我非常困惑和好奇,laravel希望我们设置传递给资源控制器方法的对象名。我想我们可以给这个物体起任何名字,但我想拉威尔对此有一些限制。我也在谷歌上搜索过,但并没有得到满意的答案。请帮我把这个弄清楚。
PS:由于错误的格式警告,stackoverflow不接受我的代码,但我已正确设置了格式,因此我将按原样发布。我不明白stackoverflow是为了帮助我们在怀疑和人们如此容易地否决投票。由于这种行为,新用户帐户可能被阻止。请支持它们。运行
php artisan route:list
查看由route::resource()
生成的路由列表。您将看到,作为第一个参数传递的名称是在生成的路由中用作参数名称的名称。当控制器函数的参数具有相同的名称时,也就是使用雄辩的模型暗示的类型,Laravel将尝试将正确的模型绑定到路由
如果您不使用相同的名称,Laravel将只注入模型的一个新实例(不预先填充现有数据)。这是您得到的普通模型,而不是现有记录的实例
作为一个旁白,您可能还想考虑将您的<代码>用户< /代码>模型改为单数而不是复数,因为它通常被认为是最佳实践。
< P>运行<代码> PHP ARTRAN路由:列表< /Cord>查看由“代码>路由::资源())/代码>生成的路由列表。您将看到,作为第一个参数传递的名称是在生成的路由中用作参数名称的名称。当控制器函数的参数具有相同的名称时,也就是使用雄辩的模型暗示的类型,Laravel将尝试将正确的模型绑定到路由 如果您不使用相同的名称,Laravel将只注入模型的一个新实例(不预先填充现有数据)。这是您得到的普通模型,而不是现有记录的实例作为一个旁白,您可能还想考虑将您的<代码>用户模型改为单数而不是复数,因为它通常被认为是最佳实践。
我认为您不能在Sub()中传递用户对象,只需在Sub()中传递$id。我不理解StAdSoad是为了帮助我们在怀疑和人们容易下注。由于这种行为,新用户帐户可能被阻止。请支持他们。我认为你不能在show()中传递User object,只需在show()中传递$id即可。我不明白stackoverflow是为了帮助我们解决疑问,让人们很容易地否决投票。由于这种行为,新用户帐户可能被阻止。请支持他们。现在就清除它。。谢谢你现在就把它清除了。。非常感谢。