/** * When rendered via a template, this populates the template with values. * * @param Template $objTemplate The Template instance to populate. * * @param array $arrRowData The row data for the current item. * * @param ISimple $objSettings The render settings to use for this attribute. * * @return void */ protected function prepareTemplate(Template $objTemplate, $arrRowData, $objSettings) { $objTemplate->setData(array('attribute' => $this, 'settings' => $objSettings, 'row' => $arrRowData, 'raw' => $arrRowData[$this->getColName()], 'additional_class' => $objSettings->get('additional_class') ? ' ' . $objSettings->get('additional_class') : '')); }
/** * Render the current item using the specified render setting. * * @param ModelToLabelEvent $event The event. * * @return void */ public static function render(ModelToLabelEvent $event) { $environment = $event->getEnvironment(); /** @var IMetaModelDataDefinition $definition */ $definition = $environment->getDataDefinition(); /** @var Contao2BackendViewDefinitionInterface $viewSection */ $viewSection = $definition->getDefinition(Contao2BackendViewDefinitionInterface::NAME); $listing = $viewSection->getListingConfig(); /** @var Model $model */ $model = $event->getModel(); if (!$model instanceof Model) { return; } $nativeItem = $model->getItem(); $metaModel = $nativeItem->getMetaModel(); $renderSetting = $metaModel->getServiceContainer()->getRenderSettingFactory()->createCollection($metaModel, $definition->getMetaModelDefinition()->getActiveRenderSetting()); if (!$renderSetting) { return; } $data = array($nativeItem->parseValue('html5', $renderSetting)); if ($listing->getShowColumns()) { $event->setArgs($data[0]['html5']); return; } $template = new Template($renderSetting->get('template')); $renderSetting = self::removeInvariantAttributes($nativeItem, $renderSetting); $template->setData(array('settings' => $renderSetting, 'items' => new Items(array($nativeItem)), 'view' => $renderSetting, 'data' => $data)); $event->setArgs(array($template->parse('html5'))); }