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

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