commerce-8.x-2.8/modules/price/src/Form/CurrencyImportForm.php
modules/price/src/Form/CurrencyImportForm.php
<?php
namespace Drupal\commerce_price\Form;
use Drupal\commerce_price\CurrencyImporterInterface;
use Drupal\Core\Form\FormBase;
use Drupal\Core\Form\FormStateInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
* Provides a form for importing currencies from library definitions.
*/
class CurrencyImportForm extends FormBase {
/**
* The currency importer.
*
* @var \Drupal\commerce_price\CurrencyImporterInterface
*/
protected $importer;
/**
* Creates a new CurrencyImportForm object.
*
* @param \Drupal\commerce_price\CurrencyImporterInterface $importer
* The currency importer.
*/
public function __construct(CurrencyImporterInterface $importer) {
$this->importer = $importer;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new static($container->get('commerce_price.currency_importer'));
}
/**
* {@inheritdoc}
*/
public function getFormId() {
return 'commerce_price_currency_import';
}
/**
* {@inheritdoc}
*/
public function buildForm(array $form, FormStateInterface $form_state) {
$currencies = $this->importer->getImportable();
if (empty($currencies)) {
$form['message'] = [
'#markup' => $this->t('All currencies have already been imported.'),
];
}
else {
$form['currency_codes'] = [
'#type' => 'select',
'#title' => $this->t('Available currencies'),
'#options' => $currencies,
'#multiple' => TRUE,
'#size' => 10,
];
$form['actions']['#type'] = 'actions';
$form['actions']['import'] = [
'#type' => 'submit',
'#button_type' => 'primary',
'#name' => 'import',
'#value' => $this->t('Add'),
'#submit' => ['::submitForm'],
];
}
return $form;
}
/**
* {@inheritdoc}
*/
public function submitForm(array &$form, FormStateInterface $form_state) {
$currency_codes = $form_state->getValue('currency_codes');
foreach ($currency_codes as $currency_code) {
$this->importer->import($currency_code);
}
$this->messenger()->addMessage($this->t('Imported the selected currencies.'));
$form_state->setRedirect('entity.commerce_currency.collection');
}
}
