Issue #3013197 by tim.plunkett: Cloning an implementation of SectionListInterface does not deep clone the Section or SectionComponent objects
parent
edfebee539
commit
cd6c671028
|
@ -356,4 +356,13 @@ class Section {
|
|||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Magic method: Implements a deep clone.
|
||||
*/
|
||||
public function __clone() {
|
||||
foreach ($this->components as $uuid => $component) {
|
||||
$this->components[$uuid] = clone $component;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -111,4 +111,17 @@ trait SectionStorageTrait {
|
|||
return isset($this->getSections()[$delta]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Magic method: Implements a deep clone.
|
||||
*/
|
||||
public function __clone() {
|
||||
$sections = $this->getSections();
|
||||
|
||||
foreach ($sections as $delta => $item) {
|
||||
$sections[$delta] = clone $item;
|
||||
}
|
||||
|
||||
$this->setSections($sections);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -137,6 +137,17 @@ abstract class SectionStorageTestBase extends EntityKernelTestBase {
|
|||
$this->assertSections($expected);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests __clone().
|
||||
*/
|
||||
public function testClone() {
|
||||
$this->assertSame([], $this->sectionStorage->getSection(0)->getLayoutSettings());
|
||||
|
||||
$new_section_storage = clone $this->sectionStorage;
|
||||
$new_section_storage->getSection(0)->setLayoutSettings(['asdf' => 'qwer']);
|
||||
$this->assertSame([], $this->sectionStorage->getSection(0)->getLayoutSettings());
|
||||
}
|
||||
|
||||
/**
|
||||
* Asserts that the field list has the expected sections.
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue