Version 1
[yaffs-website] / web / modules / contrib / devel / webprofiler / src / Form / FormBuilderWrapper.php
1 <?php
2
3 namespace Drupal\webprofiler\Form;
4
5 use Drupal\Core\Form\FormBuilder;
6 use Drupal\Core\Form\FormStateInterface;
7
8 /**
9  * Class FormBuilderWrapper
10  */
11 class FormBuilderWrapper extends FormBuilder {
12
13   /**
14    * @var array
15    */
16   private $buildForms;
17
18   /**
19    * @return array
20    */
21   public function getBuildForm() {
22     return $this->buildForms;
23   }
24
25   /**
26    * {@inheritdoc}
27    */
28   public function prepareForm($form_id, &$form, FormStateInterface &$form_state) {
29     parent::prepareForm($form_id, $form, $form_state);
30
31     if (!$this->buildForms) {
32       $this->buildForms = [];
33     }
34
35     $elements = [];
36     foreach ($form as $key => $value) {
37       if (strpos($key, '#') !== 0) {
38         $elements[$key]['#title'] = isset($value['#title']) ? $value['#title'] : NULL;
39         $elements[$key]['#access'] = isset($value['#access']) ? $value['#access'] : NULL;
40         $elements[$key]['#type'] = isset($value['#type']) ? $value['#type'] : NULL;
41       }
42     }
43
44     $buildInfo = $form_state->getBuildInfo();
45
46     $class = get_class($buildInfo['callback_object']);
47     $method = new \ReflectionMethod($class, 'buildForm');
48
49     $this->buildForms[$buildInfo['form_id']] = [
50       'class' => [
51         'class' => $class,
52         'method' => 'buildForm',
53         'file' => $method->getFilename(),
54         'line' => $method->getStartLine(),
55       ],
56       'form' => $elements,
57     ];
58
59     return $form;
60   }
61 }