/** * {@inheritdoc} */ public function getDerivativeDefinitions($base_plugin_definition) { /** @var \Drupal\payment\Entity\PaymentMethodConfigurationInterface[] $payment_methods */ $payment_methods = $this->paymentMethodConfigurationStorage->loadMultiple(); foreach ($payment_methods as $payment_method) { if ($payment_method->getPluginId() == 'payment_basic') { /** @var \Drupal\payment\Plugin\Payment\MethodConfiguration\Basic $configuration_plugin */ $configuration_plugin = $this->paymentMethodConfigurationManager->createInstance($payment_method->getPluginId(), $payment_method->getPluginConfiguration()); $this->derivatives[$payment_method->id()] = array('id' => $base_plugin_definition['id'] . ':' . $payment_method->id(), 'active' => $payment_method->status(), 'label' => $configuration_plugin->getBrandLabel() ? $configuration_plugin->getBrandLabel() : $payment_method->label(), 'message_text' => $configuration_plugin->getMessageText(), 'message_text_format' => $configuration_plugin->getMessageTextFormat(), 'execute_status_id' => $configuration_plugin->getExecuteStatusId(), 'capture' => $configuration_plugin->getCapture(), 'capture_status_id' => $configuration_plugin->getCaptureStatusId(), 'refund' => $configuration_plugin->getRefund(), 'refund_status_id' => $configuration_plugin->getRefundStatusId()) + $base_plugin_definition; } } return $this->derivatives; }
/** * {@inheritdoc} */ public function form(array $form, FormStateInterface $form_state) { /** @var \Drupal\payment\Entity\PaymentMethodConfigurationInterface $payment_method_configuration */ $payment_method_configuration = $this->getEntity(); $definition = $this->paymentMethodConfigurationManager->getDefinition($payment_method_configuration->getPluginId()); $form['type'] = array('#type' => 'item', '#title' => $this->t('Type'), '#markup' => $definition['label']); $form['status'] = array('#type' => 'checkbox', '#title' => $this->t('Enabled'), '#default_value' => $payment_method_configuration->status()); $form['label'] = array('#type' => 'textfield', '#title' => $this->t('Label'), '#default_value' => $payment_method_configuration->label(), '#maxlength' => 255, '#required' => TRUE); $form['id'] = array('#type' => 'machine_name', '#default_value' => $payment_method_configuration->id(), '#maxlength' => 255, '#required' => TRUE, '#machine_name' => array('source' => array('label'), 'exists' => array($this, 'paymentMethodConfigurationIdExists')), '#disabled' => !$payment_method_configuration->isNew()); $form['owner'] = array('#target_type' => 'user', '#type' => 'entity_autocomplete', '#title' => $this->t('Owner'), '#default_value' => $payment_method_configuration->getOwner() ? $payment_method_configuration->getOwner() : $this->currentUser, '#required' => TRUE); if ($form_state->has('payment_method_configuration')) { $payment_method_configuration_plugin = $form_state->get('payment_method_configuration'); } else { $payment_method_configuration_plugin = $this->paymentMethodConfigurationManager->createInstance($payment_method_configuration->getPluginId(), $payment_method_configuration->getPluginConfiguration()); $form_state->set('payment_method_configuration', $payment_method_configuration_plugin); } $form['plugin_form'] = array('#tree' => TRUE) + $payment_method_configuration_plugin->buildConfigurationForm([], $form_state); return parent::form($form, $form_state); }