44
55namespace CraftCms \Cms \Http \Controllers ;
66
7- use CraftCms \Cms \Cms ;
87use CraftCms \Cms \Component \ComponentHelper ;
98use CraftCms \Cms \Component \Contracts \Chippable ;
109use CraftCms \Cms \Component \Contracts \Colorable ;
2827use CraftCms \Cms \FieldLayout \FieldLayoutElement ;
2928use CraftCms \Cms \FieldLayout \FieldLayoutTab ;
3029use CraftCms \Cms \FieldLayout \LayoutElements \CustomField ;
30+ use CraftCms \Cms \Http \Requests \TableRequest ;
3131use CraftCms \Cms \Http \RespondsWithFlash ;
3232use CraftCms \Cms \Http \Responses \CpScreenResponse ;
3333use CraftCms \Cms \Support \Arr ;
4040use CraftCms \Cms \View \HtmlStack ;
4141use CraftCms \Cms \View \LegacyAssets \FieldSettingsAsset ;
4242use CraftCms \Cms \View \LegacyAssets \InternalAssetRegistry ;
43+ use Deprecated ;
4344use Illuminate \Http \JsonResponse ;
4445use Illuminate \Http \Request ;
4546use Illuminate \Validation \ValidationException ;
@@ -59,45 +60,32 @@ class FieldsController
5960
6061 public function __construct (
6162 GeneralConfig $ generalConfig ,
62- private HtmlStack $ HtmlStack ,
63+ private readonly HtmlStack $ HtmlStack ,
6364 private readonly Fields $ fieldsService ,
6465 ) {
6566 $ this ->readOnly = ! $ generalConfig ->allowAdminChanges ;
6667 }
6768
68- public function index (Request $ request )
69+ public function index (TableRequest $ request )
6970 {
70- $ page = (int ) $ request ->input (Cms::config ()->getPageTriggerParam (), 1 );
71- $ limit = (int ) $ request ->input ('per_page ' , 100 );
72- $ searchTerm = $ request ->input ('search ' );
73-
74- $ sort = ! empty ($ request ->array ('sort ' )) ? $ request ->array ('sort ' ) : [
75- ['field ' => 'name ' , 'direction ' => 'asc ' ],
76- ];
77-
78- $ orderBy = match (Arr::get ($ sort , '0.field ' )) {
79- 'handle ' => 'handle ' ,
80- 'type ' => 'type ' ,
81- default => 'name ' ,
82- };
83-
84- $ sortDir = match (Arr::get ($ sort , '0.direction ' )) {
85- 'desc ' => SORT_DESC ,
86- default => SORT_ASC ,
87- };
88-
89- [$ pagination , $ tableData ] = $ this ->fieldsService ->getTableData ($ page , $ limit , $ searchTerm , $ orderBy , $ sortDir );
71+ [$ pagination , $ tableData ] = $ this ->fieldsService ->getTableData (
72+ page: $ request ->page (),
73+ limit: $ request ->limit (),
74+ searchTerm: $ request ->search (),
75+ orderBy: $ request ->orderBy (),
76+ sortDir: $ request ->sortDir (),
77+ );
9078
9179 return Inertia::render ('settings/Fields ' , [
9280 'crumbs ' => fn () => [
9381 ['label ' => t ('Settings ' ), 'url ' => Url::cpUrl ('settings ' )],
9482 ['label ' => t ('Fields ' )],
9583 ],
9684 'title ' => t ('Fields ' ),
97- 'sort ' => $ sort ,
85+ 'sort ' => $ request -> sort () ,
9886 'data ' => fn () => $ tableData ,
9987 'pagination ' => fn () => $ pagination ,
100- 'searchTerm ' => $ searchTerm ,
88+ 'searchTerm ' => $ request -> search () ,
10189 ]);
10290 }
10391
@@ -327,23 +315,16 @@ public function renderCardPreview(Request $request, Fields $fields): JsonRespons
327315 ]);
328316 }
329317
330- #[\ Deprecated(message: 'in 6.0. Use `settings/fields` instead. ' )]
331- public function tableData (Request $ request ): Response
318+ #[Deprecated(message: 'in 6.0. Use `settings/fields` instead. ' )]
319+ public function tableData (TableRequest $ request ): Response
332320 {
333- $ page = (int ) $ request ->input (Cms::config ()->getPageTriggerParam (), 1 );
334- $ limit = (int ) $ request ->input ('per_page ' , 100 );
335- $ searchTerm = $ request ->input ('search ' );
336- $ orderBy = match ($ request ->input ('sort.0.field ' )) {
337- '__slot:handle ' => 'handle ' ,
338- 'type ' => 'type ' ,
339- default => 'name ' ,
340- };
341- $ sortDir = match ($ request ->input ('sort.0.direction ' )) {
342- 'desc ' => SORT_DESC ,
343- default => SORT_ASC ,
344- };
345-
346- [$ pagination , $ tableData ] = $ this ->fieldsService ->getTableData ($ page , $ limit , $ searchTerm , $ orderBy , $ sortDir );
321+ [$ pagination , $ tableData ] = $ this ->fieldsService ->getTableData (
322+ page: $ request ->page (),
323+ limit: $ request ->limit (),
324+ searchTerm: $ request ->search (),
325+ orderBy: $ request ->orderBy (),
326+ sortDir: $ request ->sortDir (),
327+ );
347328
348329 return $ this ->asSuccess (data: [
349330 'pagination ' => $ pagination ,
0 commit comments