From 7445397a20713b9cc03020086850663034a777fe Mon Sep 17 00:00:00 2001 From: i-just Date: Mon, 1 Jun 2026 13:14:31 +0200 Subject: [PATCH 1/5] added afterNewRecordSaved() method to elements --- src/base/Element.php | 11 +++++++++++ src/services/Elements.php | 2 ++ 2 files changed, 13 insertions(+) diff --git a/src/base/Element.php b/src/base/Element.php index b49161bf10e..cbfd7bb023d 100644 --- a/src/base/Element.php +++ b/src/base/Element.php @@ -6653,6 +6653,17 @@ public function afterSave(bool $isNew): void } } + /** + * Triggered after a new record is successfully saved. + * + * @return void + * @since 5.10.5 + */ + public function afterNewRecordSaved(): void + { + // by default we don't have to do anything when a new element record is saved + } + private function updateRelations(bool $isNew): void { if (!$this->hasFieldLayout()) { diff --git a/src/services/Elements.php b/src/services/Elements.php index 58cf6eb080d..33db91bc360 100644 --- a/src/services/Elements.php +++ b/src/services/Elements.php @@ -4046,6 +4046,8 @@ private function _saveElementInternal( $element->uri = str_replace($element->tempId, (string)$element->id, $element->uri); $element->tempId = null; } + + $element->afterNewRecordSaved(); } } From 42e73618b1f20baaeb6c259fe7f9db6b5aee7e0c Mon Sep 17 00:00:00 2001 From: i-just Date: Mon, 1 Jun 2026 13:17:10 +0200 Subject: [PATCH 2/5] update entry title after new record is saved --- src/elements/Entry.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/elements/Entry.php b/src/elements/Entry.php index 978e50832d2..148efba948a 100644 --- a/src/elements/Entry.php +++ b/src/elements/Entry.php @@ -2991,6 +2991,18 @@ public function beforeSave(bool $isNew): bool return parent::beforeSave($isNew); } + /** + * @inheritdoc + */ + public function afterNewRecordSaved(): void + { + if (ElementHelper::isDraftOrRevision($this)) { + return; + } + + $this->updateTitle(); + } + /** * Set the default values for attributes if certain conditions are met. * From f2a4e0e6813cae6eff5fa6bf089b2ce8b3049dd3 Mon Sep 17 00:00:00 2001 From: brandonkelly Date: Tue, 2 Jun 2026 09:13:09 -0700 Subject: [PATCH 3/5] Move to ElementInterface and rename to afterAssignedId() --- src/base/Element.php | 8 ++------ src/base/ElementInterface.php | 8 ++++++++ src/elements/Entry.php | 2 +- src/services/Elements.php | 2 +- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/base/Element.php b/src/base/Element.php index cbfd7bb023d..b45f8291ce9 100644 --- a/src/base/Element.php +++ b/src/base/Element.php @@ -6654,14 +6654,10 @@ public function afterSave(bool $isNew): void } /** - * Triggered after a new record is successfully saved. - * - * @return void - * @since 5.10.5 + * @inheritdoc */ - public function afterNewRecordSaved(): void + public function afterAssignedId(): void { - // by default we don't have to do anything when a new element record is saved } private function updateRelations(bool $isNew): void diff --git a/src/base/ElementInterface.php b/src/base/ElementInterface.php index 37b0c6140b9..36d858fb871 100644 --- a/src/base/ElementInterface.php +++ b/src/base/ElementInterface.php @@ -1875,6 +1875,14 @@ public function beforeSave(bool $isNew): bool; */ public function afterSave(bool $isNew): void; + /** + * Performs actions after the element is assigned an ID. + * + * @return void + * @since 5.10.5 + */ + public function afterAssignedId(): void; + /** * Performs actions after an element is fully saved and propagated to other sites. * diff --git a/src/elements/Entry.php b/src/elements/Entry.php index 148efba948a..ddba01fd576 100644 --- a/src/elements/Entry.php +++ b/src/elements/Entry.php @@ -2994,7 +2994,7 @@ public function beforeSave(bool $isNew): bool /** * @inheritdoc */ - public function afterNewRecordSaved(): void + public function afterAssignedId(): void { if (ElementHelper::isDraftOrRevision($this)) { return; diff --git a/src/services/Elements.php b/src/services/Elements.php index 33db91bc360..7d1f741954b 100644 --- a/src/services/Elements.php +++ b/src/services/Elements.php @@ -4047,7 +4047,7 @@ private function _saveElementInternal( $element->tempId = null; } - $element->afterNewRecordSaved(); + $element->afterAssignedId(); } } From 56c3c454717d996ad953c77a1b3a325e7a82b82a Mon Sep 17 00:00:00 2001 From: brandonkelly Date: Tue, 2 Jun 2026 09:14:21 -0700 Subject: [PATCH 4/5] Release note --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9c9baa9762e..27cad9b53eb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,10 +2,12 @@ ## Unreleased +- Added `craft\base\ElementInterface::afterAssignedId()`. - Fixed an error that occurred when executing the `users/remove-2fa` command non-interactively, if `--method` wasn’t provided. ([#18724](https://github.com/craftcms/cms/issues/18724)) - Fixed a bug where Link fields weren’t getting updated when the “Replace relations” element deletion option was chosen. ([#18992](https://github.com/craftcms/cms/issues/18992)) - Fixed a bug where it wasn’t always possible to select new categories or entries in relation fields. ([#18976](https://github.com/craftcms/cms/issues/18976)) - Fixed a bug where Checkboxes and Multi-select fields weren’t handling `:empty:`/`:notempty:` params properly. ([#18988](https://github.com/craftcms/cms/issues/18988), [#19019](https://github.com/craftcms/cms/pull/19019)) +- Fixed a bug where entries with `{id}` in their Default Title Format weren’t always getting created with the correct generated title. ([#18991](https://github.com/craftcms/cms/issues/18991)) ## 5.10.4.1 - 2026-05-28 From b80512f7447d9e3f74df6ac378c242129f3c7711 Mon Sep 17 00:00:00 2001 From: brandonkelly Date: Tue, 2 Jun 2026 09:15:14 -0700 Subject: [PATCH 5/5] Remove `@return void` [ci skip] --- src/base/ElementInterface.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/base/ElementInterface.php b/src/base/ElementInterface.php index 36d858fb871..c05d32664a6 100644 --- a/src/base/ElementInterface.php +++ b/src/base/ElementInterface.php @@ -1878,7 +1878,6 @@ public function afterSave(bool $isNew): void; /** * Performs actions after the element is assigned an ID. * - * @return void * @since 5.10.5 */ public function afterAssignedId(): void;