diff --git a/core/modules/migrate_drupal_ui/src/Form/CredentialForm.php b/core/modules/migrate_drupal_ui/src/Form/CredentialForm.php index 08c9c2d437..eafe50b32d 100644 --- a/core/modules/migrate_drupal_ui/src/Form/CredentialForm.php +++ b/core/modules/migrate_drupal_ui/src/Form/CredentialForm.php @@ -5,6 +5,7 @@ use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Render\RendererInterface; use Drupal\Core\TempStore\PrivateTempStoreFactory; +use GuzzleHttp\ClientInterface; use GuzzleHttp\Exception\TransferException; use Symfony\Component\DependencyInjection\ContainerInterface; @@ -23,16 +24,26 @@ class CredentialForm extends MigrateUpgradeFormBase { protected $renderer; /** + * The HTTP client to fetch the feed data with. + * + * @var \GuzzleHttp\ClientInterface + */ + protected $httpClient; + + /** * CredentialForm constructor. * * @param \Drupal\Core\Render\RendererInterface $renderer * The renderer service. * @param \Drupal\Core\TempStore\PrivateTempStoreFactory $tempstore_private * The private tempstore factory. + * @param \GuzzleHttp\ClientInterface $http_client + * A Guzzle client object. */ - public function __construct(RendererInterface $renderer, PrivateTempStoreFactory $tempstore_private) { + public function __construct(RendererInterface $renderer, PrivateTempStoreFactory $tempstore_private, ClientInterface $http_client) { parent::__construct($tempstore_private); $this->renderer = $renderer; + $this->httpClient = $http_client; } /** @@ -41,7 +52,8 @@ public function __construct(RendererInterface $renderer, PrivateTempStoreFactory public static function create(ContainerInterface $container) { return new static( $container->get('renderer'), - $container->get('tempstore.private') + $container->get('tempstore.private'), + $container->get('http_client') ); } @@ -202,10 +214,10 @@ public function validateForm(array &$form, FormStateInterface $form_state) { $connection = $this->getConnection($database); $version = (string) $this->getLegacyDrupalVersion($connection); if (!$version) { - $errors[$driver . '][0'] = $this->t('Source database does not contain a recognizable Drupal version.'); + $errors[$database['driver'] . '][database'] = $this->t('Source database does not contain a recognizable Drupal version.'); } elseif ($version !== (string) $form_state->getValue('version')) { - $errors[$driver . '][0'] = $this->t('Source database is Drupal version @version but version @selected was selected.', + $errors['version'] = $this->t('Source database is Drupal version @version but version @selected was selected.', [ '@version' => $version, '@selected' => $form_state->getValue('version'), @@ -217,7 +229,7 @@ public function validateForm(array &$form, FormStateInterface $form_state) { } } catch (\Exception $e) { - $errors[$driver . '][0'] = $e->getMessage(); + $errors[$driver] = $e->getMessage(); } // Check that sources files are available. @@ -241,7 +253,7 @@ public function validateForm(array &$form, FormStateInterface $form_state) { } else { try { - \Drupal::httpClient()->head($source); + $this->httpClient->head($source); } catch (TransferException $e) { $errors[$key] = $msg . ' ' . $e->getMessage(); @@ -265,20 +277,17 @@ public function validateForm(array &$form, FormStateInterface $form_state) { protected function buildErrorList(array $errors, FormStateInterface $form_state) { $items = []; foreach ($errors as $name => $message) { - $form_state->setErrorByName($name . '][0'); + $form_state->setErrorByName($name); $items[] = $message; } - $msg_singular = $this->t('Resolve the issue below to continue the upgrade.'); - $msg_plural = $this->t('Resolve the issues below to continue the upgrade.'); - $msg = $this->formatPlural(count($errors), $msg_singular, $msg_plural); $list = [ - '#title' => $msg, + '#title' => $this->t('Resolve all issues below to continue the upgrade.'), '#theme' => 'item_list', '#items' => $items, ]; $name = current(array_keys($errors)); - $form_state->setErrorByName($name, $this->renderer->renderPlain($list)); + $form_state->setErrorByName($name . '][0', $this->renderer->renderPlain($list)); } /**