protected function EntityExtraFieldForm::attachFieldTypeConditionForm in Entity Extra Field 8
Same name and namespace in other branches
- 2.0.x src/Form/EntityExtraFieldForm.php \Drupal\entity_extra_field\Form\EntityExtraFieldForm::attachFieldTypeConditionForm()
Attach field type condition form.
Parameters
array $form: An array of form elements.
\Drupal\Core\Form\FormStateInterface $form_state: The form state instance.
\Drupal\Core\Plugin\Context\ContextDefinitionInterface $context: The context definition.
Return value
\Drupal\entity_extra_field\Form\EntityExtraFieldForm
Throws
\Drupal\Component\Plugin\Exception\PluginException
1 call to EntityExtraFieldForm::attachFieldTypeConditionForm()
- EntityExtraFieldForm::form in src/
Form/ EntityExtraFieldForm.php - Gets the actual form array to be built.
File
- src/
Form/ EntityExtraFieldForm.php, line 376
Class
- EntityExtraFieldForm
- Define entity extra field form.
Namespace
Drupal\entity_extra_field\FormCode
protected function attachFieldTypeConditionForm(array &$form, FormStateInterface $form_state, ContextDefinitionInterface $context) {
$parents = [
'field_type_condition',
];
$form['conditions'] = [
'#type' => 'vertical_tabs',
'#title' => $this
->t('Field Type Conditions'),
];
$form['field_type_condition']['#tree'] = TRUE;
foreach ($this
->getConditionDefinitionsByContext($context) as $plugin_id => $definition) {
$form['field_type_condition'][$plugin_id] = [
'#type' => 'details',
'#title' => $definition['label'],
'#group' => 'conditions',
];
$subform_parents = array_merge($parents, [
$plugin_id,
]);
$configuration = $this
->getEntityFormStateValue($subform_parents, $form_state, []);
/** @var \Drupal\Core\Condition\ConditionInterface $condition */
$condition = $this->conditionPluginManager
->createInstance($plugin_id, $configuration);
$subform = [
'#parents' => $subform_parents,
];
$form['field_type_condition'][$plugin_id] += $condition
->buildConfigurationForm($subform, SubformState::createForSubform($subform, $form, $form_state));
/**
* @todo Remove workaround once
* https://www.drupal.org/project/drupal/issues/2783897 is fixed.
*/
if ($plugin_id === 'current_theme') {
$form['field_type_condition'][$plugin_id]['theme']['#empty_option'] = $this
->t('- None -');
}
}
$form['field_conditions_all_pass'] = [
'#type' => 'checkbox',
'#title' => $this
->t('All Conditions Must Pass'),
'#description' => $this
->t('If checked, then all conditions must evaluate true.'),
'#default_value' => $this
->getEntityFormStateValue('field_conditions_all_pass', $form_state),
];
return $this;
}