public ViewsFormMainForm::buildForm(array $form, FormStateInterface $form_state, ViewExecutable $view = NULL, $output = [])
Form constructor.
Parameters
array $form: An associative array containing the structure of the form.
\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.
Return value
array The form structure.
Overrides FormInterface::buildForm
File
- core/modules/views/src/Form/ViewsFormMainForm.php, line 20
Class
Namespace
Drupal\views\Form
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | public function buildForm( array $form , FormStateInterface $form_state , ViewExecutable $view = NULL, $output = []) { $form [ '#prefix' ] = '<div class="views-form">' ; $form [ '#suffix' ] = '</div>' ; $form [ '#pre_render' ][] = 'views_pre_render_views_form_views_form' ; // Add the output markup to the form array so that it's included when the form // array is passed to the theme function. $form [ 'output' ] = $output ; // This way any additional form elements will go before the view // (below the exposed widgets). $form [ 'output' ][ '#weight' ] = 50; $form [ 'actions' ] = array ( '#type' => 'actions' , ); $form [ 'actions' ][ 'submit' ] = array ( '#type' => 'submit' , '#value' => t( 'Save' ), ); $substitutions = array (); foreach ( $view ->field as $field_name => $field ) { $form_element_name = $field_name ; if (method_exists( $field , 'form_element_name' )) { $form_element_name = $field ->form_element_name(); } $method_form_element_row_id_exists = FALSE; if (method_exists( $field , 'form_element_row_id' )) { $method_form_element_row_id_exists = TRUE; } // If the field provides a views form, allow it to modify the $form array. $has_form = FALSE; if (property_exists( $field , 'views_form_callback' )) { $callback = $field ->views_form_callback; $callback ( $view , $field , $form , $form_state ); $has_form = TRUE; } elseif (method_exists( $field , 'viewsForm' )) { $field ->viewsForm( $form , $form_state ); $has_form = TRUE; } // Build the substitutions array for use in the theme function. if ( $has_form ) { foreach ( $view ->result as $row_id => $row ) { if ( $method_form_element_row_id_exists ) { $form_element_row_id = $field ->form_element_row_id( $row_id ); } else { $form_element_row_id = $row_id ; } $substitutions [] = array ( 'placeholder' => '<!--form-item-' . $form_element_name . '--' . $form_element_row_id . '-->' , 'field_name' => $form_element_name , 'row_id' => $form_element_row_id , ); } } } // Give the area handlers a chance to extend the form. $area_handlers = array_merge ( array_values ( $view ->header), array_values ( $view ->footer)); $empty = empty ( $view ->result); foreach ( $area_handlers as $area ) { if (method_exists( $area , 'viewsForm' ) && ! $area ->viewsFormEmpty( $empty )) { $area ->viewsForm( $form , $form_state ); } } $form [ '#substitutions' ] = array ( '#type' => 'value' , '#value' => $substitutions , ); return $form ; } |
Please login to continue.