Fatal error: Class 'Smarty' not found nachdem ich getConfigParam von oxConfig überschrieben habe

Hallo,

ich erhalte einen Fatal Error, wenn ich in meinem Modul die [B]getConfigParam[/B] Funktion von [B]oxconfig[/B] überschreibe. Verwendete OXID-Version ist [B]4.9.3[/B].

Meine Funktion, welche die ursprüngliche Funktion überschreibt, sieht so aus:

public function getConfigParam($sName)
{
    if ($sName == "sCustomTheme" && false === $this->_isHeaderThemeSet) {
        
        // get according event category id based on current active category
        $eventCategoryId = $this->getActiveEventCategoryId();
        
        // if one was found, assign variable to smarty
        if (null !== $eventCategoryId) {
            $oSmarty = oxRegistry::get("oxUtilsView")->getSmarty();
            $oSmarty->assign("insp_headerTheme", $this->getHeaderTheme($eventCategoryId));
            $this->_isHeaderThemeSet = true;
        }
    }
    return parent::getConfigParam($sName);
}

Die Zeile, wo er im Shop aussteigt ist:

$oSmarty = oxRegistry::get("oxUtilsView")->getSmarty();

Es sieht so aus, als kann man an der Stelle im OXID noch keine Smarty-Instanz bekommen, da die zugehörige Klasse nebst Datei noch nicht eingebunden wurde.

Ich konnte es lösen, indem ich die Klasse selbst einbinde, falls Smarty als Klasse noch nicht definiert wurde:

if (false === class_exists("Smarty")) {
    require_once getShopBasePath() . "core/smarty/Smarty.class.php";
}

Damit funktioniert alles wieder.

Was mache ich falsch hier? Woran könnte es liegen?

gegenfrage, was hast du denn überhaupt vor? so ganz erschließt sich mir das nicht …

Guten Morgen,

die getConfigParam ist zum Setzen von Smarty relevanten Daten. Sicher könnte man die auch woanders platzieren, wenn ich grad so darüber nachdenke, jedoch fiel mir hier der Smarty-Fehler auf, welcher vor der 4.9.0 noch nicht auftrat. Dies könnte für andere Entwickler wichtig sein.

Viele Grüße

getConfigParam() holt den wert einer variable, hat prinzipiell nichts mit smarty zu tun.

Hallo ProudCommerce,

danke für die Hinweise.

Es bleibt jedoch festzustellen, dass an dieser Stelle die Smarty-Instanz des Shops noch nicht initialisiert wurde. Ich werde mich vielleicht mal nach einer alternativen Lösung umschauen, statt die getConfigParam Funktion zu verwenden.

Viele Grüße