@@ -19,63 +19,77 @@ class Admin extends ModelAdmin {
1919 Module::class
2020 );
2121
22- public function getEditForm ($ id = null , $ fields = null )
23- {
24- // Get the default form
22+ public function getEditForm ($ id = null , $ fields = null ){
2523 $ form = parent ::getEditForm ($ id , $ fields );
2624
27- // GridField name (ModelAdmin sanitises the class)
2825 $ gridFieldName = $ this ->sanitiseClassName (Module::class);
26+ $ gridField = $ form ->Fields ()->fieldByName ($ gridFieldName );
2927
30- // Locate the GridField
31- $ gridField = $ form ->Fields ()->fieldByName ("$ gridFieldName " );
32- if (!$ gridField ) {
33- return $ form ;
34- }
28+ // Swap out our "Add" button for the multiclass Add
29+ $ gridField ->getConfig ()->addComponent (new GridFieldAddNewMultiClass ());
30+ $ gridField ->getConfig ()->removeComponentsByType (GridFieldAddNewButton::class);
3531
36- $ config = $ gridField ->getConfig ();
32+ return $ form ;
33+ }
34+
35+ // public function getEditForm($id = null, $fields = null)
36+ // {
37+ // // Get the default form
38+ // $form = parent::getEditForm($id, $fields);
3739
38- // --- Remove default Add button ---
39- $ config -> removeComponentsByType (GridFieldAddNewButton ::class);
40+ // // GridField name (ModelAdmin sanitises the class)
41+ // $gridFieldName = $this->sanitiseClassName(Module ::class);
4042
41- // --- Remove GridFieldExtensions DetailForm hook that breaks MultiClass ---
42- $ config ->removeComponentsByType (
43- GridFieldDetailFormItemRequestExtension::class
44- );
43+ // // Locate the GridField
44+ // $gridField = $form->Fields()->fieldByName("Root.$gridFieldName");
45+ // if (!$gridField) {
46+ // return $form;
47+ // }
4548
46- // --- Create MultiClass Add component ---
47- $ multiClass = new GridFieldAddNewMultiClass ();
49+ // $config = $gridField->getConfig();
4850
49- // --- Get list of classes dynamically ---
50- $ classes = [] ;
51+ // // --- Remove default Add button ---
52+ // $config->removeComponentsByType(GridFieldAddNewButton::class) ;
5153
52- foreach (ClassInfo:: subclassesFor (Module::class) as $ class ) {
53- if ( $ class === Module::class) {
54- continue ;
55- }
54+ // // --- Remove GridFieldExtensions DetailForm hook that breaks MultiClass ---
55+ // $config->removeComponentsByType(
56+ // GridFieldDetailFormItemRequestExtension::class
57+ // );
5658
57- // Skip abstract classes
58- if ((new \ReflectionClass ($ class ))->isAbstract ()) {
59- continue ;
60- }
59+ // // --- Create MultiClass Add component ---
60+ // $multiClass = new GridFieldAddNewMultiClass();
6161
62- // Only include classes that can be created
63- if (!(singleton ($ class )->canCreate ())) {
64- continue ;
65- }
62+ // // --- Get list of classes dynamically ---
63+ // $classes = [];
6664
67- $ classes [$ class ] = singleton ($ class )->i18n_singular_name ();
68- }
65+ // foreach (ClassInfo::subclassesFor(Module::class) as $class) {
66+ // if ($class === Module::class) {
67+ // continue;
68+ // }
6969
70- // Optional: allow project to override/extend via config
71- $ configClasses = Config::forClass (self ::class)->get ('slide_classes ' ) ?? [];
72- $ classes = array_merge ($ classes , $ configClasses );
70+ // // Skip abstract classes
71+ // if ((new \ReflectionClass($class))->isAbstract()) {
72+ // continue;
73+ // }
7374
74- $ multiClass ->setClasses ($ classes );
75+ // // Only include classes that can be created
76+ // if (!(singleton($class)->canCreate())) {
77+ // continue;
78+ // }
7579
76- // Add to GridField
77- $ config ->addComponent ($ multiClass );
80+ // $classes[$class] = singleton($class)->i18n_singular_name();
81+ // }
82+
83+ // // Optional: allow project to override/extend via config
84+ // $configClasses = Config::forClass(self::class)->get('slide_classes') ?? [];
85+ // $classes = array_merge($classes, $configClasses);
86+
87+ // $multiClass->setClasses($classes);
88+
89+ // // Add to GridField
90+ // $config->addComponent($multiClass);
91+
92+ // return $form;
93+ // }
7894
79- return $ form ;
80- }
8195}
0 commit comments