将两个模型传递给控制器第二个模型为空
Passing two models to controller second model is null
我正在尝试将两个模型传递给控制器,但第二个模型为空。哪里可能出错
blade 查看
{!! link_to_route('schools.school-classes.edit', 'Edit', array($school->id, $class->id), array('class'=>'label label-info')) !!}
web.php 代码是
Route::bind('school-classes', function ($value, $route){
return \App\SchoolClass::whereId($value)->first();
});
Route::bind('schools', function ($value, $route){
return \App\School::whereId($value)->first();
});
Route::resource('schools', 'SchoolsController');
Route::resource('schools.school-classes', 'SchoolClassesController');
当我 运行 php artisan route:list 我得到
GET|HEAD | schools/{school}/school-classes/{school_class}/edit | schools.school-classes.edit | App\Http\Controllers\SchoolClassesController@edit | web
在我的控制器中
public function edit(School $school, SchoolClass $class){
var_dump($class);
}
$class 为空。我哪里会出错?
正在生成的路由包含下划线 (_
) 而不是破折号 (-
)。您需要相应地设置绑定:
// use 'school_class' instead of 'school_classes'
Route::bind('school_class', function ($value, $route){
return \App\SchoolClass::whereId($value)->first();
});
我正在尝试将两个模型传递给控制器,但第二个模型为空。哪里可能出错 blade 查看
{!! link_to_route('schools.school-classes.edit', 'Edit', array($school->id, $class->id), array('class'=>'label label-info')) !!}
web.php 代码是
Route::bind('school-classes', function ($value, $route){
return \App\SchoolClass::whereId($value)->first();
});
Route::bind('schools', function ($value, $route){
return \App\School::whereId($value)->first();
});
Route::resource('schools', 'SchoolsController');
Route::resource('schools.school-classes', 'SchoolClassesController');
当我 运行 php artisan route:list 我得到
GET|HEAD | schools/{school}/school-classes/{school_class}/edit | schools.school-classes.edit | App\Http\Controllers\SchoolClassesController@edit | web
在我的控制器中
public function edit(School $school, SchoolClass $class){
var_dump($class);
}
$class 为空。我哪里会出错?
正在生成的路由包含下划线 (_
) 而不是破折号 (-
)。您需要相应地设置绑定:
// use 'school_class' instead of 'school_classes'
Route::bind('school_class', function ($value, $route){
return \App\SchoolClass::whereId($value)->first();
});