diff --git a/src/Plugin/Field/FieldWidget/ImageCanvasEditorWidget.php b/src/Plugin/Field/FieldWidget/ImageCanvasEditorWidget.php index 71ae99b301c019a054b4fce71b11413b1996cd98..62178a88e8985c489f5da9727bbc26918d839814 100644 --- a/src/Plugin/Field/FieldWidget/ImageCanvasEditorWidget.php +++ b/src/Plugin/Field/FieldWidget/ImageCanvasEditorWidget.php @@ -4,6 +4,7 @@ namespace Drupal\image_canvas_editor_api\Plugin\Field\FieldWidget; use Drupal\Component\Serialization\Json; use Drupal\Component\Utility\NestedArray; +use Drupal\Core\Entity\ContentEntityForm; use Drupal\Core\Field\FieldDefinitionInterface; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Render\ElementInfoManagerInterface; @@ -125,11 +126,12 @@ class ImageCanvasEditorWidget extends ImageWidget { $inline_form = NestedArray::getValue($form, array_slice($element['#array_parents'], 0, 4)); $form_mode = $inline_form['#form_mode']; } + $bundle = self::getBundle($element, $form_state); $link = [ '#attached' => ['library' => ['core/drupal.ajax']], '#type' => 'link', '#url' => Url::fromRoute('image_canvas_editor_api.editor', [ - 'bundle' => $element['#bundle'], + 'bundle' => $bundle, 'field_name' => $field_name, 'form_mode' => $form_mode, 'entity_type' => $element['#entity_type'], @@ -156,4 +158,20 @@ class ImageCanvasEditorWidget extends ImageWidget { return $element; } + /** + * Get the bundle from the element, somehow. + */ + public static function getBundle($element, FormStateInterface $form_state) { + $bundle = NULL; + if (isset($element['#bundle'])) { + return $element['#bundle']; + } + if ($form_object = $form_state->getFormObject()) { + if ($form_object instanceof ContentEntityForm) { + return $form_object->getEntity()->bundle(); + } + } + return $bundle; + } + }