Пример #1
0
/**
 * Form API validate for install_settings form.
 */
function install_settings_form_validate($form, &$form_state)
{
    form_set_value($form['_database'], $form_state['values'], $form_state);
    $errors = install_database_errors($form_state['values'], $form_state['values']['settings_file']);
    foreach ($errors as $name => $message) {
        form_set_error($name, $message);
    }
}
Пример #2
0
 /**
  * Get any database errors and links them to a form element.
  *
  * @param array $database
  *   An array of database settings.
  * @param string $settings_file
  *   The settings file that contains the database settings.
  *
  * @return array
  *   An array of form errors keyed by the element name and parents.
  */
 protected function getDatabaseErrors(array $database, $settings_file)
 {
     $errors = install_database_errors($database, $settings_file);
     $form_errors = array_filter($errors, function ($value) {
         // Errors keyed by something other than an integer already are linked to
         // form elements.
         return is_int($value);
     });
     // Find the generic errors.
     $errors = array_diff_key($errors, $form_errors);
     if (count($errors)) {
         $error_message = ['#type' => 'inline_template', '#template' => '{% trans %}Resolve all issues below to continue the installation. For help configuring your database server, see the <a href="https://www.drupal.org/getting-started/install">installation handbook</a>, or contact your hosting provider.{% endtrans%}{{ errors }}', '#context' => ['errors' => ['#theme' => 'item_list', '#items' => $errors]]];
         // These are generic errors, so we do not have any specific key of the
         // database connection array to attach them to; therefore, we just put
         // them in the error array with standard numeric keys.
         $form_errors[$database['driver'] . '][0'] = $this->renderer->renderPlain($error_message);
     }
     return $form_errors;
 }
 /**
  * {@inheritdoc}
  */
 public function validateForm(array &$form, FormStateInterface $form_state)
 {
     $driver = $form_state->getValue('driver');
     $database = $form_state->getValue($driver);
     $drivers = drupal_get_database_types();
     $reflection = new \ReflectionClass($drivers[$driver]);
     $install_namespace = $reflection->getNamespaceName();
     // Cut the trailing \Install from namespace.
     $database['namespace'] = substr($install_namespace, 0, strrpos($install_namespace, '\\'));
     $database['driver'] = $driver;
     $form_state->set('database', $database);
     $errors = install_database_errors($database, $form_state->getValue('settings_file'));
     foreach ($errors as $name => $message) {
         $form_state->setErrorByName($name, $message);
     }
 }
Пример #4
0
 /**
  * {@inheritdoc}
  */
 public function validateForm(array &$form, array &$form_state)
 {
     $driver = $form_state['values']['driver'];
     $database = $form_state['values'][$driver];
     $drivers = drupal_get_database_types();
     $reflection = new \ReflectionClass($drivers[$driver]);
     $install_namespace = $reflection->getNamespaceName();
     // Cut the trailing \Install from namespace.
     $database['namespace'] = substr($install_namespace, 0, strrpos($install_namespace, '\\'));
     $database['driver'] = $driver;
     $form_state['storage']['database'] = $database;
     $errors = install_database_errors($database, $form_state['values']['settings_file']);
     foreach ($errors as $name => $message) {
         $this->setFormError($name, $form_state, $message);
     }
 }