/** * {@inheritdoc} */ public function build($entity_type_id, $entity_id, $flag_id) { $entity = $this->entityTypeManager->getStorage($entity_type_id)->load($entity_id); $flag = $this->flagService->getFlagById($flag_id); $link_type_plugin = $flag->getLinkTypePlugin(); $link = $link_type_plugin->getLink($flag, $entity); return $link; }
/** * Performs a flagging when called via a route. * * @param \Drupal\flag\FlagInterface $flag * The flag entity. * @param int $entity_id * The flaggable entity ID. * @param \Symfony\Component\HttpFoundation\Request $request * The request. * * @return \Symfony\Component\HttpFoundation\RedirectResponse * The response object. * * @see \Drupal\flag\Plugin\Reload */ public function unflag(FlagInterface $flag, $entity_id, Request $request) { /* @var \Drupal\Core\Entity\EntityInterface $entity */ $entity = $this->flagService->getFlaggableById($flag, $entity_id); try { $this->flagService->unflag($flag, $entity); } catch (\LogicException $e) { // Fail silently so we return to the entity, which will show an updated // link for the existing state of the flag. } return $this->generateResponse($flag, $entity, $request); }