Modulvariablen in Code und Templates nutzen

in  Basics , ,

Modulvariablen in Code und Templates nutzen

Dieser Beitrag gibt eine kurze Einführung in die Verwendung von Modulvariablen. Diese können dazu verwendet werden, bestimmte Parameter in einem Modul einstellbar zu machen. Typische Beispiel hierfür sind etwa Grenzwerte oder API-Keys für Drittdienste.

Nutzung im Code

Die wichtigsten Grundfunktionen werden von Zikula durch die ModUtil-Klasse bereitgestellt.

1
2
3
4
5
ModUtil::hasVar($modname, $name)
ModUtil::getVar($modname, $name = '', $default = false)
ModUtil::setVar($modname, $name, $value = '')
ModUtil::setVars($modname, array $vars)
ModUtil::delVar($modname, $name = '')

Innerhalb von Klassen, die von Zikula_AbstractBase erben, zum Beispiel in Controller- und API-Klassen, gibt es außerdem Convenience-Methoden, die auf die oben genannten ModUtil-Methoden verweisen.

1
2
3
4
5
6
$this->setVar($key, $value='')
$this->setVars(array $vars)
$this->getVar($key, $default=false)
$this->getVars()
$this->delVar($key)
$this->delVars()

Nutzung im Template

Zikula stellt per Standard jedem Template alle Modulvariablen zur Verfügung. Diese können direkt als Variable benutzt werden. Die folgenden Beispiele beziehen sich auf Smarty, noch nicht auf Twig.

Meine ModVar: {$modvars.MeinModul.meineVariable}

Falls man nicht davon ausgehen kann, dass die Variable korrekt initialisiert wurde, sollte man einen Standardwert vorgeben.

Meine ModVar: {$modvars.MeinModul.meineVariable|default:'abc'}

Falls man außerdem nicht davon ausgehen kann, dass das Modul überhaupt verfügbar ist, zum Beispiel weil man eine Variable in einem vom Modul unabhängigen Template einsetzen möchte, sollte man dies entsprechend prüfen.

{assign var='myVar' value='abc'}
{* entweder *}
{modavailable modname='MeinModul' assign='hasMeinModul'}
{if $hasMeinModul}
    {assign var='myVar' value=$modvars.MeinModul.meineVariable|default:'abc'}
{/if}
{* oder *}
{if isset($modvars.MeinModul)}
    {assign var='myVar' value=$modvars.MeinModul.meineVariable|default:'abc'}
{/if}

Die zweite Variante ist hierbei im Vergleich zur ersten nicht ganz so sauber, weil sie auch dann die Variable des Moduls verwendet, wenn dieses zwar installiert, aber auf inaktiv gestellt ist. In dem Falle sollte eigentlich eher abc verwendet werden.

Weitere Beiträge in Kategorie Basics

Optische Varianzen mit SCSS-Maps umsetzen
- In vielen Weblayouts ist es notwendig, unterschiedliche Ausprägungen einer bestimmten kosmetischen “Stellschraube” zu realisieren. So können etwa einzelne Akzentfarben je nach Unterseite, …
Git spielend im Griff
- Eine schöne interaktive Möglichkeit, einige Konzepte von Git näher kennen zu lernen, bietet die Seite Learn Git Branching. In diesem Spiel werden in unterschiedlichen Tutorials und Aufgaben die …
Sektionen zum Ein- und Ausklappen ohne JavaScript und in Markdown nutzen
- Der HTML5-Standard bietet einige Tags, mit denen sich interaktive Elemente abbilden lassen. Ein sehr nützliches Beispiel sind die Tags <details> und <summary>: sie erlauben die Erstellung …
Lesetipp: das Buch zu Symfony 5 auf deutsch
- Das Buch “Symfony 5: The Fast Track” von Fabian Potencier zeigt anhand praktischer Beispiele einen großen Teil der Bandbreite der Symfony-Komponenten. Es eignet sich daher für einen …
CSS-Konzepte spielerisch lernen
- Die Cascading Style Sheets zum Gestalten von Internetseiten und Webanwendungen gibt es schon eine ganze Ewigkeit. Elementare Dinge ändern sich hier vergleichsweise selten. Mit der Umstellung von …