restrictedFields = FieldHelper::prepareRestrictions($restrictedFields); } /** * @param FormInterface $childType * @param FormInterface $parentType */ public function applyRestrictions(FormInterface $childType, FormInterface $parentType, array $restrictedFields = null): void { if (null === $restrictedFields) { $restrictedFields = $this->restrictedFields; } $fieldName = $childType->getName(); if (array_key_exists($fieldName, $restrictedFields)) { if (is_array($restrictedFields[$fieldName])) { // Part of the collection of fields are restricted foreach ($childType as $grandchild) { $this->applyRestrictions($grandchild, $childType, $restrictedFields[$fieldName]); } return; } $this->restrictField($childType, $parentType); } } /** * @param FormInterface $childType * @param FormInterface $parentType */ private function restrictField(FormInterface $childType, FormInterface $parentType): void { switch ($this->displayMode) { case self::MODE_MASK: $parentType->add( $childType->getName(), $childType->getConfig()->getType()->getInnerType()::class, array_merge( $childType->getConfig()->getOptions(), [ 'required' => false, 'mapped' => false, 'disabled' => true, 'attr' => array_merge($childType->getConfig()->getOptions()['attr'] ?? [], [ 'placeholder' => $this->translator->trans('mautic.config.restricted'), 'readonly' => true, ]), ] ) ); break; case self::MODE_REMOVE: $parentType->remove($childType->getName()); break; } } }