EmergencyForm.php in Display Suite 8.4
File
src/Form/EmergencyForm.php
View source
<?php
namespace Drupal\ds\Form;
use Drupal\Core\Config\ConfigFactory;
use Drupal\Core\Extension\ModuleHandlerInterface;
use Drupal\Core\Form\ConfigFormBase;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\State\StateInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
class EmergencyForm extends ConfigFormBase {
protected $state;
protected $moduleHandler;
public function __construct(ConfigFactory $config_factory, ModuleHandlerInterface $module_handler, StateInterface $state) {
parent::__construct($config_factory);
$this->moduleHandler = $module_handler;
$this->state = $state;
}
public static function create(ContainerInterface $container) {
return new static($container
->get('config.factory'), $container
->get('module_handler'), $container
->get('state'));
}
public function getFormId() {
return 'ds_emergy_form';
}
public function buildForm(array $form, FormStateInterface $form_state) {
$form['ds_fields_error'] = [
'#type' => 'fieldset',
'#title' => $this
->t('Fields error'),
];
$form['ds_fields_error']['disable'] = [
'#type' => 'html_tag',
'#tag' => 'p',
'#value' => $this
->t('In case you get an error after configuring a layout printing a message like "Fatal error: Unsupported operand types", you can temporarily disable adding fields from DS. You probably are trying to render an node inside a node, for instance through a view, which is simply not possible. See <a href="http://drupal.org/node/1264386">http://drupal.org/node/1264386</a>.'),
];
$form['ds_fields_error']['submit'] = [
'#type' => 'submit',
'#value' => $this->state
->get('ds.disabled', FALSE) ? $this
->t('Enable attaching fields') : $this
->t('Disable attaching fields'),
'#submit' => [
'::submitFieldAttach',
],
'#weight' => 1,
];
return $form;
}
public function submitForm(array &$form, FormStateInterface $form_state) {
}
public function submitFieldAttach(array &$form, FormStateInterface $form_state) {
$this->state
->set('ds.disabled', $this->state
->get('ds.disabled', FALSE) ? FALSE : TRUE);
$this
->messenger()
->addMessage(t('The configuration options have been saved.'));
}
protected function getEditableConfigNames() {
return [
'ds_extras.settings',
];
}
}