' > ', self::NO_BADGE => false, ]; public function __construct(TranslatableStringHelper $translatableStringHelper, EngineInterface $engine) { $this->translatableStringHelper = $translatableStringHelper; $this->engine = $engine; } public function supports($entity, array $options): bool { return $entity instanceof SocialAction; } public function renderString($socialAction, array $options): string { /** @var $socialAction SocialAction */ $options = \array_merge(self::DEFAULT_ARGS, $options); $titles[] = $this->translatableStringHelper->localize($socialAction->getTitle()); while ($socialAction->hasParent()) { $socialAction = $socialAction->getParent(); $titles[] = $this->translatableStringHelper->localize( $socialAction->getTitle() ); } $titles = \array_reverse($titles); return \implode($options[self::SEPARATOR_KEY], $titles); } protected function buildParents($socialAction): array { $parents = []; while ($socialAction->hasParent()) { $socialAction = $parents[] = $socialAction->getParent(); } return $parents; } public function renderBox($socialAction, array $options): string { $options = \array_merge(self::DEFAULT_ARGS, $options); // give some help to twig: an array of parents $parents = $this->buildParents($socialAction); return $this->engine->render('@ChillPerson/Entity/social_action.html.twig', [ 'socialAction' => $socialAction, 'parents' => $parents, 'options' => $options ]); } }