QuizFeedbackConditionsForm.php in Quiz 6.x
File
src/Form/QuizFeedbackConditionsForm.php
View source
<?php
namespace Drupal\quiz\Form;
use Drupal\Core\Form\ConfigFormBase;
use Drupal\Core\Form\FormStateInterface;
use Drupal\rules\Ui\RulesUiConfigHandler;
class QuizFeedbackConditionsForm extends ConfigFormBase {
protected $rulesUiHandler;
protected function getEditableConfigNames() {
return [];
}
public function getFormId() {
return 'quiz_feedback_conditions';
}
public function buildForm(array $form, FormStateInterface $form_state, RulesUiConfigHandler $rules_ui_handler = NULL) {
$form = parent::buildForm($form, $form_state);
$this->rulesUiHandler = $rules_ui_handler;
$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);
$config = $this->rulesUiHandler
->getConfig();
$config
->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());
}
}