[英]laravel resource controllers / routes and models
所以如果你做类似的事情
$ artisan make:model TurboClown
$ artisan make:controller TurboClownController -r --model=TurboClown
因此,此时可以添加如下内容:
Route::resource('clowns','TurboClownController');
到您的routes/web.php
。 现在,当我与工匠一起进行routes:list
时,我有诸如clowns/{clown}
routes:list
。
但是,我的show
函数就像:
public function show(TurboClown $turboClown)
当您return $turboClown
时,例如,当您请求“ / clowns / 3 /”时,将仅给出[]
作为响应。 我花了一段时间才弄清楚,如果我将$turboClown
参数更改$turboClown
$clown
,则会得到一个JSON TurboClown作为响应。
所以从某种意义上说,我解决了我的问题。 但我对以下几点感到好奇:
对我来说, https: ['parameters' => ['clown' => 'turboClown']
读起来就像我可以添加['parameters' => ['clown' => 'turboClown']
然后show()
可以使用“ turboClown”工作,但不能。
根据https://laravel.com/docs/5.4/routing#route-parameters :“路由参数根据其顺序注入到路由回调/控制器中-回调/控制器参数的名称无关紧要。” 但是看起来参数的名称在这种情况下重要吗?
因此,我想对这两点进行某种澄清,我缺少什么?
参数数组应该是资源名称和参数名称的关联数组
因此,在您的情况下,资源名称为“小丑”(而不是“小丑”),并且您希望此资源名称的参数为“ turboClown”:
Route::resource('clowns', 'TurboClownController', ['parameters' => [
'clowns' => 'turboClown'
]]);
Laravel自动解析在路由或控制器操作中定义的口才模型,这些操作的类型提示变量名称与路由段名称匹配。
同样, TurboClown
此功能很酷,参数必须匹配相应模型的标识符(在您的情况下为TurboClown
)。
因此,现在结合这两点,您应该能够做到这一点:
在您的路线文件中:
Route::resource('clowns', 'TurboClownController', ['parameters' => [
'clowns' => 'turboClown'
]]);
在TurboClownController
:
public function show(TurboClown $turboClown)
{
return $turboClown;
}
现在,假设您要检索标识为5的涡轮小丑。您可以计算路线http://example.dev/clowns/5
。
希望能有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.