ConfigSplitExportForm.php in Configuration Split 2.0.x
File
src/Form/ConfigSplitExportForm.php
View source
<?php
namespace Drupal\config_split\Form;
use Drupal\config_split\ConfigSplitManager;
use Drupal\Core\Access\AccessResult;
use Drupal\Core\Config\StorageComparer;
use Drupal\Core\Config\StorageCopyTrait;
use Drupal\Core\Form\FormBase;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Session\AccountInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
class ConfigSplitExportForm extends FormBase {
use ConfigImportFormTrait;
use StorageCopyTrait;
protected $manager;
public function __construct(ConfigSplitManager $configSplitManager) {
$this->manager = $configSplitManager;
}
public static function create(ContainerInterface $container) {
return new static($container
->get('config_split.manager'));
}
public function getFormId() {
return 'config_split_deactivate_form';
}
public function buildForm(array $form, FormStateInterface $form_state) {
$split = $this
->getSplit();
$comparer = new StorageComparer($this->manager
->singleExportPreview($split), $this->manager
->singleExportTarget($split));
$options = [
'route' => [
'config_split' => $split
->getName(),
'operation' => 'export',
],
'operation label' => $this
->t('Export to split storage'),
];
return $this
->buildFormWithStorageComparer($form, $form_state, $comparer, $options, FALSE);
}
public function submitForm(array &$form, FormStateInterface $form_state) {
$split = $this
->getSplit();
$target = $this->manager
->singleExportTarget($split);
self::replaceStorageContents($this->manager
->singleExportPreview($split), $target);
$this
->redirect('entity.config_split.collection');
}
public function access(AccountInterface $account) {
$split = $this
->getSplit();
return AccessResult::allowedIfHasPermission($account, 'administer configuration split')
->andIf(AccessResult::allowedIf($split
->get('status')))
->addCacheableDependency($split);
}
}