Provide method to create a copy of a field (and other TypedData)

Created on 1 August 2016, about 9 years ago
Updated 5 August 2025, about 22 hours ago

Problem/Motivation

* \Drupal\Core\Entity\EntityInterface has a createDuplicate() method with which other code can create a duplicate of an entity.
* There is no such method for fields. But fields really should know how to create a copy of themselves.
* A nontrivial use case for this is paragraphs (or any other fieldable-fields-like module): When copying the field, the referenced paragraph must be copied. Note that a paragraph is just a behavior of the underlying reference field, and there are reference fields that should not get the referenced entity copied.
* We have a contrib module replicate β†’ which implements this (and which dawehner ported to D8 β†’ ), but this should really live in core.

Proposed resolution

(inspired by dawehner's replicate port)
* Provide a method \Drupal\Core\TypedData\TypedDataInterface::createDuplicate which basically
** delegates to contained TypedDataInterface or does a clone
** fires an event (that e.g. paragraph can subscribe)

Remaining tasks

* Decide on architecture
* Roll a patch and get it in

User interface changes

None.

API changes

API addition, no BC break.

Data model changes

None.

✨ Feature request
Status

Postponed: needs info

Version

11.0 πŸ”₯

Component

field system

Created by

πŸ‡©πŸ‡ͺGermany geek-merlin Freiburg, Germany

Live updates comments and jobs are added and updated live.
  • stale-issue-cleanup

    To track issues in the developing policy for closing stale issues, [Policy, no patch] closing older issues

Sign in to follow issues

Comments & Activities

Not all content is available!

It's likely this issue predates Contrib.social: some issue and comment data are missing.

  • πŸ‡ΊπŸ‡ΈUnited States smustgrave

    Thank you for sharing your idea for improving Drupal.

    We are working to decide if this proposal meets the Criteria for evaluating proposed changes. There hasn't been any discussion here for over 8 years which suggests that this has either been implemented or there is no community support. Your thoughts on this will allow a decision to be made.

    Since we need more information to move forward with this issue, the status is now Postponed (maintainer needs more info). If we don't receive additional information to help with the issue, it may be closed after three months.

    Thanks!

Production build 0.71.5 2024