public SiteSettingsForm::buildForm(array $form, FormStateInterface $form_state)
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/lib/Drupal/Core/Installer/Form/SiteSettingsForm.php, line 62
Class
- SiteSettingsForm
- Provides a form to configure and rewrite settings.php.
Namespace
Drupal\Core\Installer\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 80 81 82 83 84 | public function buildForm( array $form , FormStateInterface $form_state ) { $settings_file = './' . $this ->sitePath . '/settings.php' ; $form [ '#title' ] = $this ->t( 'Database configuration' ); $drivers = drupal_get_database_types(); $drivers_keys = array_keys ( $drivers ); // Unless there is input for this form (for a non-interactive installation, // input originates from the $settings array passed into install_drupal()), // check whether database connection settings have been prepared in // settings.php already. // Note: The installer even executes this form if there is a valid database // connection already, since the submit handler of this form is responsible // for writing all $settings to settings.php (not limited to $databases). $input = & $form_state ->getUserInput(); if (!isset( $input [ 'driver' ]) && $database = Database::getConnectionInfo()) { $input [ 'driver' ] = $database [ 'default' ][ 'driver' ]; $input [ $database [ 'default' ][ 'driver' ]] = $database [ 'default' ]; } if (isset( $input [ 'driver' ])) { $default_driver = $input [ 'driver' ]; // In case of database connection info from settings.php, as well as for a // programmed form submission (non-interactive installer), the table prefix // information is usually normalized into an array already, but the form // element only allows to configure one default prefix for all tables. $prefix = & $input [ $default_driver ][ 'prefix' ]; if (isset( $prefix ) && is_array ( $prefix )) { $prefix = $prefix [ 'default' ]; } $default_options = $input [ $default_driver ]; } // If there is no database information yet, suggest the first available driver // as default value, so that its settings form is made visible via #states // when JavaScript is enabled (see below). else { $default_driver = current( $drivers_keys ); $default_options = array (); } $form [ 'driver' ] = array ( '#type' => 'radios' , '#title' => $this ->t( 'Database type' ), '#required' => TRUE, '#default_value' => $default_driver , ); if ( count ( $drivers ) == 1) { $form [ 'driver' ][ '#disabled' ] = TRUE; } // Add driver specific configuration options. foreach ( $drivers as $key => $driver ) { $form [ 'driver' ][ '#options' ][ $key ] = $driver ->name(); $form [ 'settings' ][ $key ] = $driver ->getFormOptions( $default_options ); $form [ 'settings' ][ $key ][ '#prefix' ] = '<h2 class="js-hide">' . $this ->t( '@driver_name settings' , array ( '@driver_name' => $driver ->name())) . '</h2>' ; $form [ 'settings' ][ $key ][ '#type' ] = 'container' ; $form [ 'settings' ][ $key ][ '#tree' ] = TRUE; $form [ 'settings' ][ $key ][ 'advanced_options' ][ '#parents' ] = array ( $key ); $form [ 'settings' ][ $key ][ '#states' ] = array ( 'visible' => array ( ':input[name=driver]' => array ( 'value' => $key ), ) ); } $form [ 'actions' ] = array ( '#type' => 'actions' ); $form [ 'actions' ][ 'save' ] = array ( '#type' => 'submit' , '#value' => $this ->t( 'Save and continue' ), '#button_type' => 'primary' , '#limit_validation_errors' => array ( array ( 'driver' ), array ( $default_driver ), ), '#submit' => array ( '::submitForm' ), ); $form [ 'errors' ] = array (); $form [ 'settings_file' ] = array ( '#type' => 'value' , '#value' => $settings_file ); return $form ; } |
Please login to continue.