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



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

下面是我的控制器方法的样子。

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

和我的

路由名称

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

问:我的路由(item-details(和方法(getStockDetails(的最佳命名约定是什么?

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

您可以在 URI 模式中使用烤肉串大小写和复数形式,但控制器名称使用 camelCase 和单数,因为如果尝试执行路由模型绑定,这就是 Laravel 将寻找的内容。

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

Route::resource('item-details', 'ItemDetailController');

route 参数将产生 snake_case 和单数

/item-details/{item_detail}

对于控制器方法,常规名称是indexshowcreatestoreeditupdatedelete。和蛇壳用于自定义方法。

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

Route::group(['prefix'  =>  'system-items'], function () {
Route::resource('item-details', 'ItemDetailController');
});

运行php artisan route:list以查看结果

+--------+-----------+-----------------------------------------------------+-------------------------+---------------------------------------------------------------------------+--------------+
| Domain | Method    | URI                                                 | Name                    | Action                                                                    | Middleware   |
+--------+-----------+-----------------------------------------------------+-------------------------
|        | GET|HEAD  | api/v1/system-items/item-details                    | item-details.index      | AppHttpControllersApiv1ItemDetailController@index                         | api          |
|        | POST      | api/v1/system-items/item-details                    | item-details.store      | AppHttpControllersApiv1ItemDetailController@store                         | api          |
|        | GET|HEAD  | api/v1/system-items/item-details/create             | item-details.create     | AppHttpControllersApiv1ItemDetailController@create                        | api          |
|        | GET|HEAD  | api/v1/system-items/item-details/{item_detail}      | item-details.show       | AppHttpControllersApiv1ItemDetailController@show                          | api          |
|        | PUT|PATCH | api/v1/system-items/item-details/{item_detail}      | item-details.update     | AppHttpControllersApiv1ItemDetailController@update                        | api          |
|        | DELETE    | api/v1/system-items/item-details/{item_detail}      | item-details.destroy    | AppHttpControllersApiv1ItemDetailController@destroy                       | api          |
|        | GET|HEAD  | api/v1/system-items/item-details/{item_detail}/edit | item-details.edit       | AppHttpControllersApiv1ItemDetailController@edit  

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

最新更新