laravel资源函数工作正常,但当我手动使用它时,它不起作用



当我在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'));
}

$factorFactor 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的模型实例。

最新更新