Hallo,
ich versuche mich in der Erstellung von Content Elementen. Und versuche ein eigenes RSCE nun als Content Element zu erstellen.
Backendfelder via DCA ist soweit erledigt.
Template, damit im Frontend die DCA-Felder auch dargestellt werden ist soweit erledigt.
Im RSCE wird im Template eine Abfrage gestartet, die Klassennamen für CSS-Klassen abfragt und im Template dann via 'implode' ausgibt. Und hier stehe ich an ...
Ich bringe diese Abfrage einfach nicht hin ...
Hier mal das ursprüngliche Template aus dem RSCE:
PHP-Code:
<?php
$cssCanvas = [
$this->class,
'divider',
$this->width,
$this->styles,
$this->iconbg,
];
if ($this->outline) {
$cssCanvas[] = 'divider-border';
};
$noicon = 'no-icon';
?>
<div class="<?php echo implode(' ', $cssCanvas) ?>"<?php echo $this->cssID ?>>
<?php if (($this->styles) !== $noicon): ?>
<?php if ($this->icontotop): ?>
<a href="#" data-scrollto="top">
<?php endif; ?>
<i data-icon="&#x<?php echo $this->icon ?>;"></i>
<?php if ($this->icontotop): ?>
</a>
<?php endif; ?>
<?php endif; ?>
</div>
Und hier meine aktuelle 'DividerController.php':
PHP-Code:
<?php
//src/Controller/ContentElement/DividerController.php
declare(strict_types=1);
namespace Berecont\ContaoDividerBundle\Controller\ContentElement;
use Contao\ContentModel;
use Contao\CoreBundle\Controller\ContentElement\AbstractContentElementController;
use Contao\CoreBundle\ServiceAnnotation\ContentElement;
use Contao\Template;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
/**
* Class DividerController
*
* @ContentElement(DividerController::TYPE, category="werbepanorama", template="ce_divider")
*/
class DividerController extends AbstractContentElementController
{
public const TYPE = 'divider';
/**
* Generate the content element
*/
protected function getResponse(Template $template, ContentModel $model, Request $request): ?Response
{
$template->dividerWidth = $model->dividerWidth;
$template->dividerStyle = $model->dividerStyle;
$template->dividerIconbgOutline = $model->dividerIconbgOutline;
$cssClasses = [
$template->dividerWidth,
];
if ($template->dividerIconbgOutline) {
$cssClasses[] = 'divider-border';
};
$cssClass = implode(' ',$cssClasses);
return $template->getResponse();
}
}
Meine, wohl naive, Vorstellung wäre, dass ich die Variable $cssClass nun im Template ausgebe. Also anstatt der Zeile aus dem RSCE:
<div class="<?php echo implode(' ', $cssCanvas) ?>"<?php echo $this->cssID ?>>
sollte nun
<div class="<?= $this->cssClass ?>"<?php echo $this->cssID ?>>
oder Ähnliches in meinem Template ce_divider.html5 stehen.
Hilft mir jemand mit einem Beispiel weiter?
Lesezeichen