Пример #1
0
 /**
  * {@inheritdoc}
  */
 public function form(array $form, FormStateInterface $form_state)
 {
     $condition_id = $form_state->get('condition_id');
     $configuration = $this->conditionExpression->getConfiguration();
     if (empty($condition_id) && !empty($configuration['condition_id'])) {
         $condition_id = $configuration['condition_id'];
         $form_state->set('condition_id', $condition_id);
     }
     // Step 1 of the multistep form.
     if (!$condition_id) {
         $condition_definitions = $this->conditionManager->getGroupedDefinitions();
         $options = [];
         foreach ($condition_definitions as $group => $definitions) {
             foreach ($definitions as $id => $definition) {
                 $options[$group][$id] = $definition['label'];
             }
         }
         $form['condition_id'] = ['#type' => 'select', '#title' => $this->t('Condition'), '#options' => $options, '#required' => TRUE];
         $form['continue'] = ['#type' => 'submit', '#value' => $this->t('Continue'), '#name' => 'continue', '#limit_validation_errors' => [['condition_id']], '#submit' => [static::class . '::submitFirstStep']];
         return $form;
     }
     // Step 2 of the form.
     /** @var \Drupal\rules\Core\RulesConditionInterface $condition */
     $condition = $this->conditionManager->createInstance($condition_id);
     $form['summary'] = ['#markup' => $condition->summary()];
     $context_definitions = $condition->getContextDefinitions();
     $form['context']['#tree'] = TRUE;
     foreach ($context_definitions as $context_name => $context_definition) {
         $form = $this->buildContextForm($form, $form_state, $context_name, $context_definition, $configuration);
     }
     $form['save'] = ['#type' => 'submit', '#value' => $this->t('Save'), '#name' => 'save'];
     return $form;
 }