当我在route.php
文件中使用laravelRoute::resource
函数时,我正在使用laravel 5
,我可以在方法的参数中获取模型集合,如下所示:
//**web.php** file
Route::resource('factors', 'FactorsController');
//called url localhost:8000/factors/1/edit
//**FactorsController**
/**
* @param Request $request
* @return IlluminateContractsViewFactory|IlluminateViewView
*/
public function edit(Request $request, Factor $factor)
{
//$factor is a collection of Factor Model that contains id '1' information in factor table
return view('factors.edit', compact('factor'));
}
它是正确的,有效的,但当我做一个自定义的url像这样:
Route::get('factors/{id}/newEdit', 'FactorsController@newEdit');
我无法在方法参数中获取集合,它返回空集合,如下所示:
//called url localhost:8000/factors/1/newEdit
1)
//**FactorsController**
/**
* @param Request $request
* @return IlluminateContractsViewFactory|IlluminateViewView
*/
public function newEdit(Request $request, Factor $factor)
{
return view('factors.newEdit', compact('factor'));
}
$factor
是Factor Model
的空集合,但我希望数据库中有我选择的行。当我使用这样的工作正确:
2)
//**FactorsController**
/**
* @param Request $request
* @return IlluminateContractsViewFactory|IlluminateViewView
*/
public function newEdit(Request $request, $id)
{
$factor = Factor::find($id);
return view('factors.newEdit', compact('factor'));
}
但我不想叫它2,我想叫它1
谢谢你的帮助。
对于模型绑定,您应该具有与路由段名称匹配的类型提示变量名称:
Route::get('factors/{factor}/newEdit', 'FactorsController@newEdit');
由于$factor
变量被类型提示为Factor
模型,并且变量名称与{factor}
URI段匹配,Laravel将自动注入具有与请求URI中相应值匹配的ID的模型实例。