Laravel 控制器方法和路由的最佳命名约定

rjm*_*mcb 3 naming-conventions laravel

我正在创建一个 ajax 请求来获取项目详细信息

这是我的控制器方法的样子。

class SystemItemsController extends Controller
  {
      function getDetails(Request $request){
       $response =  SystemItems::where('item_name', 'like', '%' .$name . '%')->get();
       return response()->json($response,200);
  }

  }
Run Code Online (Sandbox Code Playgroud)

和我的

路由名称

Route::get("/system-items/item-details","SystemItemsController@getStockDetails");

item-details问题:我的route( )和method( )的最佳命名约定是什么getStockDetails

跟进问:我可以使用 laravel 资源来做到这一点吗?

por*_*s Ψ 7

您可以在 URI 模式中使用短横线大小写和复数形式,但使用驼峰式大小写和单数形式作为控制器名称,因为这是 Laravel 在尝试进行 route\xe2\x80\x93model 绑定时将查找的内容。

\n\n

您可以将其用于资源路由,但请注意,对于此路由

\n\n
Route::resource('item-details', 'ItemDetailController');\n
Run Code Online (Sandbox Code Playgroud)\n\n

路由参数将导致蛇形和单数

\n\n
/item-details/{item_detail}\n
Run Code Online (Sandbox Code Playgroud)\n\n

对于控制器方法,常规名称为indexshowcreatestoreedit和。以及用于自定义方法的snakeCase。updatedelete

\n\n

您还可以添加一个路由组以带有一些 uri 前缀,例如/system-items

\n\n
Route::group(['prefix'  =>  'system-items'], function () {\n    Route::resource('item-details', 'ItemDetailController');\n});\n
Run Code Online (Sandbox Code Playgroud)\n\n

运行php artisan route:list看看结果

\n\n
+--------+-----------+-----------------------------------------------------+-------------------------+---------------------------------------------------------------------------+--------------+\n| Domain | Method    | URI                                                 | Name                    | Action                                                                    | Middleware   |\n+--------+-----------+-----------------------------------------------------+-------------------------\n|        | GET|HEAD  | api/v1/system-items/item-details                    | item-details.index      | App\\Http\\Controllers\\Api\\v1\\ItemDetailController@index                         | api          |\n|        | POST      | api/v1/system-items/item-details                    | item-details.store      | App\\Http\\Controllers\\Api\\v1\\ItemDetailController@store                         | api          |\n|        | GET|HEAD  | api/v1/system-items/item-details/create             | item-details.create     | App\\Http\\Controllers\\Api\\v1\\ItemDetailController@create                        | api          |\n|        | GET|HEAD  | api/v1/system-items/item-details/{item_detail}      | item-details.show       | App\\Http\\Controllers\\Api\\v1\\ItemDetailController@show                          | api          |\n|        | PUT|PATCH | api/v1/system-items/item-details/{item_detail}      | item-details.update     | App\\Http\\Controllers\\Api\\v1\\ItemDetailController@update                        | api          |\n|        | DELETE    | api/v1/system-items/item-details/{item_detail}      | item-details.destroy    | App\\Http\\Controllers\\Api\\v1\\ItemDetailController@destroy                       | api          |\n|        | GET|HEAD  | api/v1/system-items/item-details/{item_detail}/edit | item-details.edit       | App\\Http\\Controllers\\Api\\v1\\ItemDetailController@edit  \n
Run Code Online (Sandbox Code Playgroud)\n\n

当然,所有这些都是约定,您可以通过手动操作并使用自己的约定来自定义所有内容。

\n