protected function addActions(CompiledResourceDefinitionInterface $resourceDefinition, array $which, $instance = null) { if ($this->context->wantsMetadata() === false) { return; } $actions = $resourceDefinition->getActions(); $links = []; $this->data['_actions'] = []; foreach ($actions as $action) { if ($action->getType() === ActionDefinition::TYPE_COLLECTION) { $this->addFiltersToLink('self', $action); } if (in_array($action->getType(), $which) === false || $action->isAffordanceAvailable($this->resource, $instance) === false) { continue; } $links = array_merge($links, $this->addAction($resourceDefinition, $action, $instance)); } foreach ($links as $rel => $routeName) { $this->addRestedLink($rel, $routeName); } }
/** * {@inheritdoc} */ public function registerResourceDefinition($routeName, CompiledResourceDefinitionInterface $resourceDefinition) { $this->resourceDefinitions[$routeName] = $resourceDefinition; foreach ($resourceDefinition->getActions() as $action) { $this->resourceDefinitionsByModel[$action->getTransformMapping()->getModelClass()] = $resourceDefinition; } }