public function WorkflowStateEditForm::form in Drupal 10
Same name and namespace in other branches
- 8 core/modules/workflows/src/Form/WorkflowStateEditForm.php \Drupal\workflows\Form\WorkflowStateEditForm::form()
- 9 core/modules/workflows/src/Form/WorkflowStateEditForm.php \Drupal\workflows\Form\WorkflowStateEditForm::form()
Gets the actual form array to be built.
Overrides EntityForm::form
See also
\Drupal\Core\Entity\EntityForm::processForm()
\Drupal\Core\Entity\EntityForm::afterBuild()
File
- core/
modules/ workflows/ src/ Form/ WorkflowStateEditForm.php, line 72
Class
- WorkflowStateEditForm
- Entity form variant for editing workflow states.
Namespace
Drupal\workflows\FormCode
public function form(array $form, FormStateInterface $form_state) {
$form = parent::form($form, $form_state);
/** @var \Drupal\workflows\WorkflowInterface $workflow */
$workflow = $this
->getEntity();
$workflow_type = $workflow
->getTypePlugin();
$state = $workflow
->getTypePlugin()
->getState($this->stateId);
$form['label'] = [
'#type' => 'textfield',
'#title' => $this
->t('State label'),
'#maxlength' => 255,
'#default_value' => $state
->label(),
'#required' => TRUE,
];
$form['id'] = [
'#type' => 'machine_name',
'#default_value' => $this->stateId,
'#machine_name' => [
'exists' => [
$this,
'exists',
],
],
'#disabled' => TRUE,
];
// Add additional form fields from the workflow type plugin.
if ($workflow_type
->hasFormClass(StateInterface::PLUGIN_FORM_KEY)) {
$form['type_settings'] = [
'#tree' => TRUE,
];
$subform_state = SubformState::createForSubform($form['type_settings'], $form, $form_state);
$subform_state
->set('state', $state);
$form['type_settings'] += $this->pluginFormFactory
->createInstance($workflow_type, StateInterface::PLUGIN_FORM_KEY)
->buildConfigurationForm($form['type_settings'], $subform_state);
}
$header = [
'label' => $this
->t('Transition'),
'state' => $this
->t('To'),
'operations' => $this
->t('Operations'),
];
$form['transitions'] = [
'#type' => 'table',
'#header' => $header,
'#empty' => $this
->t('There are no transitions to or from this state yet.'),
];
foreach ($state
->getTransitions() as $transition) {
$links['edit'] = [
'title' => $this
->t('Edit'),
'url' => Url::fromRoute('entity.workflow.edit_transition_form', [
'workflow' => $workflow
->id(),
'workflow_transition' => $transition
->id(),
]),
];
$links['delete'] = [
'title' => $this
->t('Delete'),
'url' => Url::fromRoute('entity.workflow.delete_transition_form', [
'workflow' => $workflow
->id(),
'workflow_transition' => $transition
->id(),
]),
];
$form['transitions'][$transition
->id()] = [
'label' => [
'#markup' => $transition
->label(),
],
'state' => [
'#markup' => $transition
->to()
->label(),
],
'operations' => [
'#type' => 'operations',
'#links' => $links,
],
];
}
return $form;
}