laravel 资源功能正常工作,但当我手动使用它时不起作用
laravel resource function works correct but when i use it manualy doesent work
我正在使用 laravel 5
当我在我的 route.php
文件中使用 laravel Route::resource
函数时,我可以在我的方法的参数中获取我的模型集合,如下所示:
//**web.php** file
Route::resource('factors', 'FactorsController');
//called url localhost:8000/factors/1/edit
//**FactorsController**
/**
* @param Request $request
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
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');
我无法在方法参数中获取集合,它 returns 像这样的空集合:
//called url localhost:8000/factors/1/newEdit
1)
//**FactorsController**
/**
* @param Request $request
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function newEdit(Request $request, Factor $factor)
{
return view('factors.newEdit', compact('factor'));
}
$factor
是 Factor Model
的空集合,但我希望在数据库中选择我的行。当我像这样使用它时工作正常:
2)
//**FactorsController**
/**
* @param Request $request
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function newEdit(Request $request, $id)
{
$factor = Factor::find($id);
return view('factors.newEdit', compact('factor'));
}
但我不想像 2 那样称呼它 我想像 1 这样称呼它
感谢您的帮助。
对于 model binding,您应该 type-hinted 变量名称与路由段名称相匹配:
Route::get('factors/{factor}/newEdit', 'FactorsController@newEdit');
由于 $factor
变量是 type-hinted 作为 Factor
模型并且变量名称匹配 {factor}
URI 段,Laravel 将自动注入具有与请求 URI 中的相应值匹配的 ID 的模型实例。
我正在使用 laravel 5
当我在我的 route.php
文件中使用 laravel Route::resource
函数时,我可以在我的方法的参数中获取我的模型集合,如下所示:
//**web.php** file
Route::resource('factors', 'FactorsController');
//called url localhost:8000/factors/1/edit
//**FactorsController**
/**
* @param Request $request
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
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');
我无法在方法参数中获取集合,它 returns 像这样的空集合:
//called url localhost:8000/factors/1/newEdit
1)
//**FactorsController**
/**
* @param Request $request
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function newEdit(Request $request, Factor $factor)
{
return view('factors.newEdit', compact('factor'));
}
$factor
是 Factor Model
的空集合,但我希望在数据库中选择我的行。当我像这样使用它时工作正常:
2)
//**FactorsController**
/**
* @param Request $request
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function newEdit(Request $request, $id)
{
$factor = Factor::find($id);
return view('factors.newEdit', compact('factor'));
}
但我不想像 2 那样称呼它 我想像 1 这样称呼它
感谢您的帮助。
对于 model binding,您应该 type-hinted 变量名称与路由段名称相匹配:
Route::get('factors/{factor}/newEdit', 'FactorsController@newEdit');
由于 $factor
变量是 type-hinted 作为 Factor
模型并且变量名称匹配 {factor}
URI 段,Laravel 将自动注入具有与请求 URI 中的相应值匹配的 ID 的模型实例。