public function processRemoveFieldDefinition(FormActionEvent $event)
 {
     /** @var \eZ\Publish\API\Repository\Values\ContentType\ContentTypeDraft $contentTypeDraft */
     $contentTypeDraft = $event->getData()->contentTypeDraft;
     // Accessing FieldDefinition user selection through the form and not the data,
     // as "selected" is not a property of FieldDefinitionData.
     /** @var \Symfony\Component\Form\FormInterface $fieldDefForm */
     foreach ($event->getForm()->get('fieldDefinitionsData') as $fieldDefForm) {
         if ($fieldDefForm->get('selected')->getData() === true) {
             $this->contentTypeService->removeFieldDefinition($contentTypeDraft, $fieldDefForm->getData()->fieldDefinition);
         }
     }
 }
Пример #2
0
 /**
  * Deletes a field definition from a content type draft
  *
  * @param $contentTypeId
  * @param $fieldDefinitionId
  *
  * @throws \eZ\Publish\Core\REST\Common\Exceptions\NotFoundException
  * @return \eZ\Publish\Core\REST\Server\Values\NoContent
  */
 public function removeContentTypeDraftFieldDefinition($contentTypeId, $fieldDefinitionId, Request $request)
 {
     $contentTypeDraft = $this->contentTypeService->loadContentTypeDraft($contentTypeId);
     $fieldDefinition = null;
     foreach ($contentTypeDraft->getFieldDefinitions() as $fieldDef) {
         if ($fieldDef->id == $fieldDefinitionId) {
             $fieldDefinition = $fieldDef;
         }
     }
     if ($fieldDefinition === null) {
         throw new Exceptions\NotFoundException("Field definition not found: '{$request->getPathInfo()}'.");
     }
     $this->contentTypeService->removeFieldDefinition($contentTypeDraft, $fieldDefinition);
     return new Values\NoContent();
 }
 /**
  * Update draft fields with diff data
  *
  * @param ContentTypeDraft $draft
  * @param array $diff
  * @param array $data
  */
 private function updateDraftFields(ContentTypeDraft $draft, array $diff, array &$data)
 {
     // Remove fields which are missing in the new definition
     foreach ($draft->fieldDefinitions as $fieldDefinition) {
         if (in_array($fieldDefinition->identifier, $diff['remove'])) {
             $this->contentTypeService->removeFieldDefinition($draft, $fieldDefinition);
         }
     }
     // Add fields which are missing in the old content type
     $fieldStructs = $data['field_definitions'];
     //$this->getFieldDefinitionCreateStructs($data);
     foreach ($fieldStructs as $fieldStruct) {
         if (in_array($fieldStruct->identifier, $diff['add'])) {
             $this->contentTypeService->addFieldDefinition($draft, $fieldStruct);
         }
     }
 }
 /**
  * Remove a field definition from an existing Type.
  *
  * @throws \eZ\Publish\API\Repository\Exceptions\InvalidArgumentException If the given field definition does not belong to the given type
  * @throws \eZ\Publish\API\Repository\Exceptions\UnauthorizedException if the user is not allowed to edit a content type
  *
  * @param \eZ\Publish\API\Repository\Values\ContentType\ContentTypeDraft $contentTypeDraft
  * @param \eZ\Publish\API\Repository\Values\ContentType\FieldDefinition $fieldDefinition
  */
 public function removeFieldDefinition(ContentTypeDraft $contentTypeDraft, FieldDefinition $fieldDefinition)
 {
     $returnValue = $this->service->removeFieldDefinition($contentTypeDraft, $fieldDefinition);
     $this->signalDispatcher->emit(new RemoveFieldDefinitionSignal(array('contentTypeDraftId' => $contentTypeDraft->id, 'fieldDefinitionId' => $fieldDefinition->id)));
     return $returnValue;
 }