Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel资源控制器';s的方法表现得很奇怪_Php_Laravel - Fatal编程技术网

Php Laravel资源控制器';s的方法表现得很奇怪

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

我是拉威尔的初学者。当我研究它的资源控制器的方法时,我发现路由名称和参数pass-in方法有着奇怪的关系。请让我解释一下:

示例1: 在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
}
示例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是为了帮助我们解决疑问,让人们很容易地否决投票。由于这种行为,新用户帐户可能被阻止。请支持他们。现在就清除它。。谢谢你现在就把它清除了。。非常感谢。