SettingsForm.php in Rules 8.3
File
tests/modules/rules_test_ui_embed/src/Form/SettingsForm.php
View source
<?php
namespace Drupal\rules_test_ui_embed\Form;
use Drupal\Core\Form\ConfigFormBase;
use Drupal\Core\Form\FormStateInterface;
use Drupal\rules\Ui\RulesUiConfigHandler;
class SettingsForm extends ConfigFormBase {
protected $rulesUiHandler;
protected function getEditableConfigNames() {
return [
'rules_test_ui_embed.settings',
];
}
public function getFormId() {
return 'rules_test_ui_embed_settings';
}
protected function config($name) {
$config = $this->rulesUiHandler ? $this->rulesUiHandler
->getConfig() : NULL;
if ($config
->getName() == $name && in_array($name, $this
->getEditableConfigNames())) {
return $config;
}
return parent::config($name);
}
public function buildForm(array $form, FormStateInterface $form_state, RulesUiConfigHandler $rules_ui_handler = NULL) {
$form = parent::buildForm($form, $form_state);
$this->rulesUiHandler = $rules_ui_handler;
$config = $this
->config('rules_test_ui_embed.settings');
$form['css_file'] = [
'#type' => 'textfield',
'#title' => $this
->t('CSS file'),
'#default_value' => $config
->get('css.0.file'),
'#required' => TRUE,
];
$form['conditions'] = $this->rulesUiHandler
->getForm()
->buildForm([], $form_state);
$form['actions']['cancel'] = [
'#type' => 'submit',
'#limit_validation_errors' => [
[
'locked',
],
],
'#value' => $this
->t('Cancel'),
'#submit' => [
'::cancel',
],
];
return $form;
}
public function validateForm(array &$form, FormStateInterface $form_state) {
parent::validateForm($form, $form_state);
$this->rulesUiHandler
->getForm()
->validateForm($form['conditions'], $form_state);
}
public function submitForm(array &$form, FormStateInterface $form_state) {
$this->rulesUiHandler
->getForm()
->submitForm($form['conditions'], $form_state);
$this
->config('rules_test_ui_embed.settings')
->set('css.0.file', $form_state
->getValue('css_file'))
->save();
$this->rulesUiHandler
->clearTemporaryStorage();
parent::submitForm($form, $form_state);
}
public function cancel(array $form, FormStateInterface $form_state) {
$this->rulesUiHandler
->clearTemporaryStorage();
$this
->messenger()
->addMessage($this
->t('Canceled.'));
$form_state
->setRedirectUrl($this->rulesUiHandler
->getBaseRouteUrl());
}
}