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]);
|
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);
|
$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.
|
* Asserts that the field list has the expected sections.
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue