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;
}
}
