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