Tipps und Tricks Filter

Hilfsklasse für wiederholende Abläufe

Manchmal ist es sinnvoll Funktionen / Methoden die man öfters benötigt in einer Hilfsklasse auszulagern. Aus der Hilfsklasse sollte es möglich sein Template Variablen zu füllen. Im Forum wurde eine Möglichkeit von xtra gezeigt:

class MyBaseModule extends FrontendModule {
    protected function doSomething()
    {
        $this->Template->foobar='Blubb';
    }
    protected function doSomethingElse()
    {
        $this->Template->barfoo='Bla';
    }
}

class MyFirstModule extends MyBaseModule
{
    protected $strTemplate = 'mod_firstmodule';

    public function generate()
    {
        if (TL_MODE == 'BE')
        {
            $objTemplate = new BackendTemplate('be_wildcard');
            $objTemplate->wildcard = '### FIRST MODULE ###';
            $objTemplate->title = $this->headline;
            $objTemplate->id = $this->id;
            $objTemplate->link = $this->name;
            $objTemplate->href = 'contao/main.php?do=themes&table=tl_module&act=edit&id=' . $this->id;
            return $objTemplate->parse();
        }
        // solltest du dein Template wechseln wollen, so tue dies hier heimlich, still und leise mittels:
        // $this->strTemplate = 'mod_somethingelse'; // vermutlich besser: $this->fieldname;

        return parent::generate();
    }

    public function compile()
    {
        // Erstmal was ins Template packen, aus dieser Klasse raus (wenn man mag, muss nicht sein).
        $this->Template->foo='What do we have now?';
        // Deine Chance, rufe die Basisroutinen auf, oder lass es bleiben (die packen dann auch was ins Template rein).
        $this->doSomething();
        $this->doSomethingElse();
        // nun packen wir nochmal was von hier aus ins Template.
        $this->Template->finish="Easy, isn't it?";
    }
}  

Damit hat man nun das Template aus der Basisklasse befüllt und innerhalb der Klasse ebenfalls noch einen Wert gesetzt.
showTemplateVars() wird also nun folgende Werte zeigen:

foo => 'What do we have now?'
foobar => 'Blubb'
barfoo => 'Bla'
finish => 'Easy, isn't it?'