mirror of
https://github.com/jbcr/core.git
synced 2026-03-31 05:12:11 +02:00
Merge pull request #1464 from bolt/bugfix/intersect-child-fields-with-definition
Intersect child fields with parent definition
This commit is contained in:
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Bolt\Event\Listener;
|
||||
|
||||
use Bolt\Configuration\Content\FieldType;
|
||||
use Bolt\Entity\Field;
|
||||
use Bolt\Entity\Field\CollectionField;
|
||||
use Bolt\Entity\Field\SetField;
|
||||
@@ -43,7 +44,8 @@ class FieldFillListener
|
||||
|
||||
public function fillSet(SetField $entity): void
|
||||
{
|
||||
$fields = $this->fields->findAllByParent($entity);
|
||||
$definition = $entity->getDefinition();
|
||||
$fields = $this->intersectFieldsAndDefinition($this->fields->findAllByParent($entity), $definition);
|
||||
|
||||
/** @var Field $field */
|
||||
foreach ($fields as $field) {
|
||||
@@ -56,14 +58,22 @@ class FieldFillListener
|
||||
|
||||
public function fillCollection(CollectionField $entity): void
|
||||
{
|
||||
$fields = $this->fields->findAllByParent($entity);
|
||||
$definition = $entity->getDefinition();
|
||||
$fields = $this->intersectFieldsAndDefinition($this->fields->findAllByParent($entity), $definition);
|
||||
|
||||
/** @var Field $field */
|
||||
foreach ($fields as $field) {
|
||||
$definition = $entity->getDefinition()->get('fields')[$field->getName()] ?? new Collection();
|
||||
$field->setDefinition($field->getName(), $definition);
|
||||
$fieldDefiniton = $entity->getDefinition()->get('fields')[$field->getName()] ?? new Collection();
|
||||
$field->setDefinition($field->getName(), $fieldDefiniton);
|
||||
}
|
||||
|
||||
$entity->setValue($fields);
|
||||
}
|
||||
|
||||
private function intersectFieldsAndDefinition(array $fields, FieldType $definition): array
|
||||
{
|
||||
return collect($fields)->filter(function (Field $field) use ($definition) {
|
||||
return $definition->get('fields')->has($field->getName());
|
||||
})->toArray();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user