Widget Fehler bei aktiviertem Cache nach zweitem Seitenaufruf

Hallo Zusammen,

mein (vereinfachtes) Plugin registriert sich auf „Enlight_Controller_Action_PostDispatchSecure_Frontend“ und bindet dort das Template „/Resources/views/frontend/index/header.tpl“ mit folgendem Inhalt ein. Außer der Template-Registrierung passiert im Plugin nichts (keine Variablenübergabe usw.).

{extends file="parent:frontend/index/header.tpl"}
{block name="frontend_index_header_javascript_tracking"}
    {$smarty.block.parent}
    {action module=widgets controller=AsTestWidget action=index}
{/block}

Weiterhin registriere ich einen Widget-Controller unter „Controller/Widgets/AsTestWidget.php“:

class Shopware_Controllers_Widgets_AsTestWidget extends Enlight_Controller_Action
{
    public function indexAction()
    {
    }
}

Das zum Controller per Autoload geladene Template befindet sich dann hier „/Resources/views/as_test_widget/index.tpl“:

{namespace name="widgets/as_test_widget/index"}
{block name="widgets_as_test_widget_index"}
    
        console.log("Widget Test success!")
    
{/block}

Nun zu meinem Problem - das Ganze funktioniert nur bei deaktiviertem/leerem Cache. Also entweder im „Bearbeitungsmodus“ oder einmalig für jede Seite nach dem leeren des Caches beim ersten Seitenaufruf. Obwohl der Aufruf beim erstem mal völlig fehlerfrei ausgeführt wird, wird beim zweiten Aufruf das Widget-Template nicht mehr gefunden:
 

Fatal error: Uncaught SmartyException: Unable to load template snippet 'widgets/as_test_widget/index.tpl' in /var/www/web/_testshop/engine/Library/Smarty/sysplugins/smarty_internal_templatebase.php:127 Stack trace: #0 /var/www/web/_testshop/engine/Library/Enlight/View/Default.php(295): Smarty_Internal_TemplateBase->fetch()
#1 /var/www/web/_testshop/engine/Library/Enlight/Controller/Plugins/ViewRenderer/Bootstrap.php(212): Enlight_View_Default->render(Object(Enlight_Template_Default))
#2 /var/www/web/_testshop/engine/Library/Enlight/Controller/Plugins/ViewRenderer/Bootstrap.php(238): Enlight_Controller_Plugins_ViewRenderer_Bootstrap->renderTemplate(Object(Enlight_Template_Default)) 
#3 /var/www/web/_testshop/engine/Library/Enlight/Controller/Plugins/ViewRenderer/Bootstrap.php(132): Enlight_Controller_Plugins_ViewRenderer_Bootstrap->render() 
#4 /var/www/web/_testshop/engine/Library/Enlight/Event/Handl 
in /var/www/web/_testshop/engine/Library/Smarty/sysplugins/smarty_internal_templatebase.php on line 127

Zum Hintergrund - das Javascript im Widget-Template ist nur ein Testbeispiel, der eigentliche Inhalt soll nicht gecached werden und ist daher in das Widget ausgelagert worden.

Hallo Zusammen,

hab das Problem selbst gelöst, für den gecacheten Aufruf muss man sich zusätzlich auf “Enlight_Controller_Action_PostDispatchSecure_Widgets” registrieren.