我搜索了很多已经与SO相关的主题。我无法使其与Controller方法一起使用,但是当我将其添加到路由文件中时就可以使用它,如下所示:
这两种方法在应用程序模型aka 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 ,它返回找不到应用程序错误,看起来像这样:
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');
答案 0 :(得分:1)
只需重新创建一个项目。方法和其他使用的虚拟名称。
在ApplicationsController中,我添加了:
`public function index(string $locale, \App\Application $application)
{
dd('here');
}`
在网络路线中:
Route::get('applications/{locale}/{application}', 'ApplicationsController@index');
在应用程序模型中:
public function getRouteKeyName() : string
{
return 'token';
}
然后php artisan serve
在http://127.0.0.1:8000/applications/el/test1中
我得到了正确的答案,你可以尝试显式绑定
https://laravel.com/docs/5.7/routing#explicit-binding
还请注意,找不到记录时将使用404响应。例如,如果我没有带有test1令牌的应用,则会得到404;
希望对您有帮助。
答案 1 :(得分:0)
Laravel自动将请求作为第一个参数传递给控制器...因此,您应像这样编辑控制器:
Intent