Drupal is a registered trademark of Dries Buytaert
drupal 11.3.7 Update released for Drupal core (11.3.7)! drupal 11.2.11 Update released for Drupal core (11.2.11)! drupal 10.6.7 Update released for Drupal core (10.6.7)! drupal 10.5.9 Update released for Drupal core (10.5.9)! cms 2.1.1 Update released for Drupal core (2.1.1)! drupal 11.3.6 Update released for Drupal core (11.3.6)! drupal 10.6.6 Update released for Drupal core (10.6.6)! cms 2.1.0 Update released for Drupal core (2.1.0)! bootstrap 8.x-3.40 Minor update available for theme bootstrap (8.x-3.40). menu_link_attributes 8.x-1.7 Minor update available for module menu_link_attributes (8.x-1.7). eca 3.1.1 Minor update available for module eca (3.1.1). layout_paragraphs 2.1.3 Minor update available for module layout_paragraphs (2.1.3). ai 1.3.3 Minor update available for module ai (1.3.3). ai 1.2.14 Minor update available for module ai (1.2.14). node_revision_delete 2.0.3 Minor update available for module node_revision_delete (2.0.3). moderated_content_bulk_publish 2.0.52 Minor update available for module moderated_content_bulk_publish (2.0.52). klaro 3.0.10 Minor update available for module klaro (3.0.10). klaro 3.0.9 Minor update available for module klaro (3.0.9). layout_paragraphs 2.1.2 Minor update available for module layout_paragraphs (2.1.2). geofield_map 11.1.8 Minor update available for module geofield_map (11.1.8).

media_library_form_element

37,048 sites Security covered
View on drupal.org

This module provides a Form API element to select a Media entity from the Media Library. This element can be used in all standalone forms. I'm currently using this in a Paragraphs behavior form to select a background image with crop-support, but you can use it in a Layout builder form, or a configuration form under "Settings"...

The implementation is borrowed from the Media Library widget and follows its user interface as well as its possibilities:

  • You can limit the allowed media types by passing the machine names of those media types
  • The default value is either:
    • Empty: NULL
    • a single Media entity's ID: (int) 1
    • multiple Media entity ID's separated by comma as a string: (string) 1,2,3,4
$form['image'] = [
  '#type' => 'media_library',
  '#allowed_bundles' => ['image'],
  '#title' => t('Upload your image'),
  '#default_value' => NULL|1|'1,2,3',
  '#description' => t('Upload or select your profile image.'),
];

I chose to release this as a standalone module so anyone can review / contribute / fork / ... without having to wait on the official core patch (https://www.drupal.org/project/drupal/issues/3065677).

Feel free to test-drive, suggest improvements or post bug reports should you encounter any!

All features have been implemented thus far, so if anyone lacks something, feel free to create an issue!

Activity

Total releases
3
First release
Jul 2025
Latest release
6 months ago
Release cadence
44 days
Stability
100% stable

Release Timeline

Releases

Version Type Release date
2.1.4 Stable Sep 30, 2025
2.1.3 Stable Sep 26, 2025
2.1.2 Stable Jul 4, 2025