openy_er
πΊπ¦
This module is maintained by Ukrainian developers.Please consider supporting Ukraine in a fight for their freedom and safety of Europe.
The idea of the module is to provide enhancements to the Core entity reference fields in the Open Y installation profile.
Long story short - when you need to keep dependencies in configs, but not making configs failing if dependency is not in place - use this module. It'll store dependencies but allow them to be skipped during installation.
Very useful for large distributions when fighting with dependency hell.
Entity Reference Selection Handler plugins
The plugins stored at src/Plugin/EntityReferenceSelection must be used in ER-fields if additional bundle filtering is setup and you export configuration of those fields into the profile.
Default Selection Handlers put dependency for each single bundle setup there, because the core works the way, that 'target_bundles' field settings entries add dependencies. See EntityReferenceItem::calculateDependencies().
DefaultSelectionNoDependency is basically needed to create a label for the group of Open Y selection handlers.
SelectionNoDependecyTrait is useful for inheriting from existing entity type specific selection handlers (see NodeSelectionNoDependency implementation as example).
See Traits Precendence section to understand how PHP handles method overrides when traits are used.
Migrating from core selection handlers to Open Y selection handlers
- Go to the required entity refrence field configuration page that is provided by Field UI
- Find "REFERENCE TYPE" section that contains "Reference method" field and a set of checkboxes for bundles limiting
- Memorize the set of the selected bundles
- Update "Reference method" value from 'Default' to 'Default (Open Y)'
- Restore the state of the checkboxes (it can be named 'Content types' for nodes, or just 'Bundles' for other entity types)
- Submit the form
- Export the config (or the whole feature)
- Verify field config doesn't contain dependencies to the bundle configs
- Make sure the module now depends on
openy_ermodule