You are here

class EntityPut in Services 9.0.x

Same name in this branch
  1. 9.0.x src/Plugin/Deriver/EntityPut.php \Drupal\services\Plugin\Deriver\EntityPut
  2. 9.0.x src/Plugin/ServiceDefinition/EntityPut.php \Drupal\services\Plugin\ServiceDefinition\EntityPut
Same name and namespace in other branches
  1. 8.4 src/Plugin/ServiceDefinition/EntityPut.php \Drupal\services\Plugin\ServiceDefinition\EntityPut

Plugin annotation


@ServiceDefinition(
  id = "entity_put",
  methods = {
    "PUT"
  },
  translatable = true,
  deriver = "\Drupal\services\Plugin\Deriver\EntityPut"
)

Hierarchy

Expanded class hierarchy of EntityPut

File

src/Plugin/ServiceDefinition/EntityPut.php, line 23

Namespace

Drupal\services\Plugin\ServiceDefinition
View source
class EntityPut extends ServiceDefinitionEntityRequestContentBase {

  /**
   * {@inheritdoc}
   */
  public function processRoute(Route $route) {
    $route
      ->setRequirement('_entity_access', $this
      ->getDerivativeId() . '.update');
  }

  /**
   * {@inheritdoc}
   */
  public function processRequest(Request $request, RouteMatchInterface $route_match, SerializerInterface $serializer) {
    try {
      $updated_entity = parent::processRequest($request, $route_match, $serializer);

      /* @var $entity \Drupal\Core\Entity\EntityInterface */
      $entity = $this
        ->getContextValue($this
        ->getDerivativeId());
      if ($entity instanceof ContentEntityInterface) {
        foreach ($updated_entity as $field_name => $field) {
          $entity
            ->set($field_name, $field
            ->getValue());
        }
      }
      else {

        /* @var $updated_entity \Drupal\Core\Config\Entity\ConfigEntityInterface */
        foreach ($updated_entity
          ->toArray() as $field_name => $field) {
          $entity
            ->set($field_name, $field);
        }
      }
      $entity
        ->save();
      return $entity
        ->toArray();
    } catch (\Exception $e) {
      throw new HttpException(422, 'The supplied content body could not be serialized into an entity of the requested type.', $e);
    }
  }

}

Members

Namesort descending Modifiers Type Description Overrides
ContextAwarePluginBase::createContextFromConfiguration protected function Overrides ContextAwarePluginBase::createContextFromConfiguration
ContextAwarePluginTrait::$context protected property The data objects representing the context of this plugin.
ContextAwarePluginTrait::$initializedContextConfig protected property Tracks whether the context has been initialized from configuration.
ContextAwarePluginTrait::getCacheContexts public function 9
ContextAwarePluginTrait::getCacheMaxAge public function 7
ContextAwarePluginTrait::getCacheTags public function 4
ContextAwarePluginTrait::getContext public function
ContextAwarePluginTrait::getContextDefinition public function
ContextAwarePluginTrait::getContextDefinitions public function
ContextAwarePluginTrait::getContextMapping public function
ContextAwarePluginTrait::getContexts public function
ContextAwarePluginTrait::getContextValue public function
ContextAwarePluginTrait::getContextValues public function
ContextAwarePluginTrait::getPluginDefinition abstract protected function 1
ContextAwarePluginTrait::setContext public function 1
ContextAwarePluginTrait::setContextMapping public function
ContextAwarePluginTrait::setContextValue public function
ContextAwarePluginTrait::validateContexts public function
DependencySerializationTrait::$_entityStorages protected property
DependencySerializationTrait::$_serviceIds protected property
DependencySerializationTrait::__sleep public function 2
DependencySerializationTrait::__wakeup public function 2
EntityPut::processRequest public function Processes the request and returns an array of data as appropriate. Overrides ServiceDefinitionEntityRequestContentBase::processRequest
EntityPut::processRoute public function Checks access for the ServiceDefintion. Overrides ServiceDefinitionBase::processRoute
PluginBase::$configuration protected property Configuration information passed into the plugin. 1
PluginBase::$pluginDefinition protected property The plugin implementation definition. 1
PluginBase::$pluginId protected property The plugin_id.
PluginBase::DERIVATIVE_SEPARATOR constant A string which is used to separate base plugin IDs from the derivative ID.
PluginBase::getBaseId public function Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface::getBaseId
PluginBase::getDerivativeId public function Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface::getDerivativeId
PluginBase::getPluginId public function Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface::getPluginId
PluginBase::isConfigurable public function Determines if the plugin is configurable.
ServiceDefinitionBase::getArguments public function Returns an array of service request arguments. Overrides ServiceDefinitionInterface::getArguments
ServiceDefinitionBase::getCategory public function Returns a translated string for the category. Overrides ServiceDefinitionInterface::getCategory
ServiceDefinitionBase::getDescription public function Returns a translated description for the constraint description. Overrides ServiceDefinitionInterface::getDescription
ServiceDefinitionBase::getMethods public function Return an array of allowed methods. Overrides ServiceDefinitionInterface::getMethods
ServiceDefinitionBase::getPath public function Returns the appended path for the service. Overrides ServiceDefinitionInterface::getPath
ServiceDefinitionBase::getTitle public function Returns a translated string for the service title. Overrides ServiceDefinitionInterface::getTitle
ServiceDefinitionBase::processResponse public function Allow plugins to alter the response object before it is returned. Overrides ServiceDefinitionInterface::processResponse
ServiceDefinitionBase::supportsTranslation public function Returns a boolean if this service definition supports translations. Overrides ServiceDefinitionInterface::supportsTranslation
ServiceDefinitionEntityRequestContentBase::$manager protected property
ServiceDefinitionEntityRequestContentBase::create public static function Creates an instance of the plugin. Overrides ContainerFactoryPluginInterface::create
ServiceDefinitionEntityRequestContentBase::__construct public function Overrides ContextAwarePluginBase::__construct
StringTranslationTrait::$stringTranslation protected property The string translation service. 4
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.
TypedDataTrait::$typedDataManager protected property The typed data manager used for creating the data types.
TypedDataTrait::getTypedDataManager public function Gets the typed data manager. 2
TypedDataTrait::setTypedDataManager public function Sets the typed data manager. 2