【发布时间】:2018-11-25 01:58:35
【问题描述】:
我在 SO 上搜索了很多相关的主题。我无法使其与 Controller 方法一起使用,但是当我将它添加到这样的路由文件中时它可以工作:
这两种方法在 Application 模型又名 app/Application 中都有这个:
class Application extends Model
{
public function getRouteKeyName(): string
{
return 'token';
}
...
所以我的 routes/web.php 看起来像这样:
Route::get('/application/{locale}/{application}', function (string $locale, App\Application $application) {
return view(
'application.application.main',
[
'application' => $application,
'isLanguageNeeded' => false,
]
);
});
我的 app/Http/Controllers/ApplicationController.php,它返回 an Application not found 错误,如下所示:
public function application(string $locale, \App\Application $application)
{
return view(
'application.application.main',
[
'application' => $application,
'isLanguageNeeded' => false,
]
);
}
routes/web.php:
Route::get('/application/{locale}/{application}', 'ApplicationController@application');
【问题讨论】:
-
只是为了定位问题,您是否尝试过使用以下作为控制器的方法?
public function application(string $locale, string $application) { $application = \App\Application::where('token', $application)->first(); return view(...); }(或者换句话说:您是否尝试手动加载模型?) -
是的,我已经手动尝试过了。不幸的是,我得到了相同的 Application not found 错误
-
您确定链接没有问题并且您传递的是正确的
token(而不是id)?我猜你知道覆盖getRouteKeyName()做了什么? -
即使您使用
function(string $locale, string $application)也不行?顺便说一句,dd($var)(dump and die) 是var_dump($var); die();的快捷方式。