public function TransactionTypeFormBase::buildForm in Transaction 8
Form constructor.
Parameters
array $form: An associative array containing the structure of the form.
\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.
Return value
array The form structure.
Overrides EntityForm::buildForm
1 call to TransactionTypeFormBase::buildForm()
- TransactionTypeEditForm::buildForm in src/
Form/ TransactionTypeEditForm.php - Form constructor.
1 method overrides TransactionTypeFormBase::buildForm()
- TransactionTypeEditForm::buildForm in src/
Form/ TransactionTypeEditForm.php - Form constructor.
File
- src/
Form/ TransactionTypeFormBase.php, line 64
Class
- TransactionTypeFormBase
- Base form for transaction type forms.
Namespace
Drupal\transaction\FormCode
public function buildForm(array $form, FormStateInterface $form_state) {
$form = parent::buildForm($form, $form_state);
/** @var \Drupal\transaction\TransactionTypeInterface $transaction_type */
$transaction_type = $this->entity;
$form['label'] = [
'#title' => $this
->t('Name'),
'#type' => 'textfield',
'#default_value' => $transaction_type
->label(),
'#description' => $this
->t('The human-readable name of this transaction type.'),
'#maxlength' => 255,
'#required' => TRUE,
'#size' => 30,
];
$form['id'] = [
'#type' => 'machine_name',
'#default_value' => $transaction_type
->id(),
'#maxlength' => EntityTypeInterface::BUNDLE_MAX_LENGTH,
'#machine_name' => [
'exists' => [
TransactionType::class,
'load',
],
'source' => [
'label',
],
],
'#description' => $this
->t('A unique machine-readable name for this transaction type. It must only contain lowercase letters, numbers, and underscores.'),
];
// Set the target entity type from request arguments on creation.
if ($transaction_type
->isNew()) {
$transaction_type
->setTargetEntityTypeId($this
->getRequest()
->get('target_entity_type'));
}
// Applicable bundles.
$target_entity_type = $this->entityTypeManager
->getDefinition($transaction_type
->getTargetEntityTypeId());
if ($target_entity_type
->getBundleEntityType()) {
$bundles = [];
$definitions = $this->bundleInfo
->getBundleInfo($target_entity_type
->id());
foreach ($definitions as $bundle_id => $bundle_metadata) {
$bundles[$bundle_id] = $bundle_metadata['label'];
}
if (count($bundles)) {
asort($bundles);
$form['bundles'] = [
'#type' => 'checkboxes',
'#title' => $this
->t('Bundles'),
'#description' => $this
->t('Bundles of the target entity type where this transaction type is applicable. Leave empty to apply to all bundles.'),
'#options' => $bundles,
'#default_value' => $transaction_type
->getBundles(),
];
}
}
// Set the transactor plugin id from request arguments on creation.
if ($transaction_type
->isNew()) {
$transaction_type
->setPluginId($this
->getRequest()
->get('transactor'));
}
// General options.
$form['options'] = [
'#type' => 'details',
'#title' => $this
->t('Options'),
'#open' => TRUE,
'#tree' => FALSE,
'#weight' => 50,
];
// Add transaction local task (tab) to target entity.
$form['options']['execution'] = [
'#type' => 'radios',
'#title' => $this
->t('Execution control'),
'#default_value' => $transaction_type
->getOption('execution', TransactionTypeInterface::EXECUTION_STANDARD),
'#options' => [
TransactionTypeInterface::EXECUTION_STANDARD => $this
->t('Leave as pending'),
TransactionTypeInterface::EXECUTION_IMMEDIATE => $this
->t('Immediate execution'),
TransactionTypeInterface::EXECUTION_ASK => $this
->t('Ask user'),
],
];
$form['options']['execution'][TransactionTypeInterface::EXECUTION_STANDARD]['#description'] = $this
->t('The new transaction can be executed only after its creation.');
$form['options']['execution'][TransactionTypeInterface::EXECUTION_IMMEDIATE]['#description'] = $this
->t('The transaction will be executed automatically right after its creation.');
$form['options']['execution'][TransactionTypeInterface::EXECUTION_ASK]['#description'] = $this
->t('Let the user choose how the new transaction will be executed in the transaction form.');
// Transaction list local task in the target entity.
$form['options']['local_task'] = [
'#type' => 'checkbox',
'#title' => $this
->t('Add a local task (tab) to access the transaction list in the target entity'),
'#description' => $this
->t('The tab will be labeled with the transaction type name. Disable if you have your own views based transaction list.'),
'#default_value' => !empty($transaction_type
->getOption('local_task')),
];
// Add transactor settings.
$form = $transaction_type
->getPlugin()
->buildConfigurationForm($form, $form_state);
return $this
->protectBundleIdElement($form);
}