public function EntityBrowserForm::buildForm in Entity Browser 8
Same name and namespace in other branches
- 8.2 src/Form/EntityBrowserForm.php \Drupal\entity_browser\Form\EntityBrowserForm::buildForm()
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 FormInterface::buildForm
File
- src/
Form/ EntityBrowserForm.php, line 141
Class
- EntityBrowserForm
- The entity browser form.
Namespace
Drupal\entity_browser\FormCode
public function buildForm(array $form, FormStateInterface $form_state) {
// During the initial form build, add this form object to the form state and
// allow for initial preparation before form building and processing.
if (!$form_state
->has('entity_form_initialized')) {
$this
->init($form_state);
}
$this
->isFunctionalForm();
$form['#attributes']['class'][] = 'entity-browser-form';
if (!empty($form_state
->get([
'entity_browser',
'instance_uuid',
]))) {
$form['#attributes']['data-entity-browser-uuid'] = $form_state
->get([
'entity_browser',
'instance_uuid',
]);
}
$form['#browser_parts'] = [
'widget_selector' => 'widget_selector',
'widget' => 'widget',
'selection_display' => 'selection_display',
];
if (!($current_widget_id = $this
->getCurrentWidget($form_state))) {
$this->messenger
->addWarning($this
->t('No widgets are available.'));
return $form;
}
$this->entityBrowser
->getWidgetSelector()
->setDefaultWidget($current_widget_id);
$form[$form['#browser_parts']['widget_selector']] = $this->entityBrowser
->getWidgetSelector()
->getForm($form, $form_state);
$widget = $this->entityBrowser
->getWidget($current_widget_id);
if ($widget
->access()
->isAllowed()) {
$form[$form['#browser_parts']['widget']] = $widget
->getForm($form, $form_state, $this->entityBrowser
->getAdditionalWidgetParameters());
}
else {
$this->messenger
->addWarning($this
->t('Access to the widget forbidden.'));
}
// Add cache access cache metadata from the widgets to the form directly as
// it is affected.
foreach ($this->entityBrowser
->getWidgets() as $widget) {
/** @var \Drupal\entity_browser\WidgetInterface $widget */
$this->renderer
->addCacheableDependency($form, $widget
->access());
}
$form[$form['#browser_parts']['selection_display']] = $this->entityBrowser
->getSelectionDisplay()
->getForm($form, $form_state);
if ($this->entityBrowser
->getDisplay() instanceof DisplayAjaxInterface) {
$this->entityBrowser
->getDisplay()
->addAjax($form);
}
$form['#attached']['library'][] = 'entity_browser/entity_browser';
return $form;
}