private function registerContentTypes() { $container = $this->container; $output = $this->output; $this->output->registerContentType('TemplateSelector', function (TemplateSelector $selector) use($container, $output) { /** @var RepositoryInterface $repo */ $repo = $container->get('Repository')->forEntity(Template::class); $templates = $repo->getAll(); // @todo Grouping $groups = ['Available Templates' => $templates]; $accordion = new Accordion('Accordion Title', null, new \stdClass()); foreach ($groups as $title => $group) { $compound = new Compound('div', $title, null, new \stdClass()); foreach ($group as $item) { $imageData = new ImageEntity(); $imageData->url = '/' . $item->path . '/preview.png'; $image = new Image($imageData, $item->path); $compound->add($image); } $accordion->add($compound); } $accordion->accept($output); }); }
/** * Render an accordion * * @param Accordion $accordion The accordion * * @return integer Number of bytes written to the output */ public function visitAccordion(Accordion $accordion) { $accordion->setId('accordion-' . spl_object_hash($accordion)); $this->preRenderChildElements($accordion); return $this->applyLayout('accordion.php', $accordion); }