ispim-1.0.x-dev/src/ConfigObjectFormExportMessageTrait.php

src/ConfigObjectFormExportMessageTrait.php
<?php

declare(strict_types=1);

namespace Drupal\ispim;

use Drupal\Core\Url;

/**
 * Usable in classes extended from ConfigFormBase.
 *
 * @see \Drupal\Core\Form\ConfigFormBase
 */
trait ConfigObjectFormExportMessageTrait {

  /**
   * @return array<string>
   */
  abstract protected function getEditableConfigNames(): array;

  /**
   * @return \Drupal\Core\Messenger\MessengerInterface
   */
  abstract public function messenger();

  /**
   * @phpstan-param string $string
   *
   * @return \Drupal\Core\StringTranslation\TranslatableMarkup
   */
  abstract protected function t($string, array $args = [], array $options = []);

  protected function emitExportUriMessages(): static {
    foreach ($this->getEditableConfigNames() as $configName) {
      $configExportUrl = Url::fromRoute(
        'config.export_single',
        [
          'config_type' => 'system.simple',
          'config_name' => $configName,
        ],
      );

      if ($configExportUrl->access()) {
        /* @noinspection HtmlUnknownTarget */
        $this
          ->messenger()
          ->addStatus($this->t(
            'Link to the configuration export: <a href=":config.exportUri"><code>@config.name</code></a>.',
            [
              ':config.exportUri' => $configExportUrl->toString(),
              '@config.name' => $configName,
            ],
          ));
      }
    }

    return $this;
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc