它看起来非常简单,但我不能解决这个奇怪的问题超过3小时...;。
我只是创建我的控制器方法像
// AccountTeacherPassportController.php
public function delete(Teacher $teacher)
{
// do things
}
使用这种方法,我写了路由... ...
Route::post('deltp/{teacher}', 'AccountTeacherPassportController@delete')->name('delTeacherPassport');
这是超级简单的情况下,我得到这个错误。
传递给App\Http\Controllers\Administrators\AccountTeacherPassportController::delete()的参数1必须是App\Gatesplan\Teacher/Teacher的实例,字符串给定。
有这种经历的人,帮我一下... ...
解决了。以下是我的问题报告。
来源: 如果路由定义在路由组中, Laravel的路由模型绑定不工作.
{wildcard}
s.我的问题是,入口点的url使用两个通配符,而不是一个通配符。{user}
, {teacher}
但我的控制器方法只接受一个参数。public function delete(Teacher $teacher)
这是不有序的。所以我修改了如下方法 public function delete($user, Teacher $teacher)
并有效。很明显,`public function delete(User $user, Teacher $teacher)也能用。
根据 文件 在您使用 explicit binding
要注册一个显式绑定,使用路由器的model方法来指定给定参数的类。你应该在路由器的引导方法中定义你的显式模型绑定。
RouteServiceProvider
类。
public function boot()
{
parent::boot();
Route::model('teacher', App\Gatesplan\Teacher\Teacher::class);
}
接下来,定义一个包含{教师}参数的路由(你已经做了)。
Route::post('deltp/{teacher}', 'AccountTeacherPassportController@delete')->name('delTeacherPassport');