Spaces:
No application file
No application file
| declare(strict_types=1); | |
| namespace Mautic\FormBundle\Collection; | |
| use Mautic\FormBundle\Crate\FieldCrate; | |
| use Mautic\FormBundle\Exception\FieldNotFoundException; | |
| /** | |
| * @extends \ArrayIterator<int,FieldCrate> | |
| */ | |
| final class FieldCollection extends \ArrayIterator | |
| { | |
| /** | |
| * @return array<string,string> | |
| */ | |
| public function toChoices(): array | |
| { | |
| $choices = []; | |
| /** @var FieldCrate $field */ | |
| foreach ($this as $field) { | |
| $choices[$field->getName()] = $field->getKey(); | |
| } | |
| return $choices; | |
| } | |
| /** | |
| * @return FieldCrate|null | |
| */ | |
| public function getFieldByKey(string $key, bool $throwExceptionIfNotFound = true) | |
| { | |
| /** @var FieldCrate $field */ | |
| foreach ($this as $field) { | |
| if ($key === $field->getKey()) { | |
| return $field; | |
| } | |
| } | |
| if ($throwExceptionIfNotFound) { | |
| throw new FieldNotFoundException("Field with key {$key} was not found."); | |
| } | |
| return null; | |
| } | |
| /** | |
| * @param string[] $keys | |
| */ | |
| public function removeFieldsWithKeys(array $keys, string $keyToKeep = null): FieldCollection | |
| { | |
| return new self( | |
| array_filter( | |
| $this->getArrayCopy(), | |
| fn (FieldCrate $field): bool => ($keyToKeep && $field->getKey() === $keyToKeep) || !in_array($field->getKey(), $keys, true) | |
| ) | |
| ); | |
| } | |
| } | |