Syntax Error in template unknown modifier "sortby"

Hallo Zusammen,

in meiner aktuellen Shopware 5.2.9 Umgebung habe ich mir in meinem Theme einen eigenen smarty_modifier geschrieben. Dieser liegt in meinem Template an folgender Stelle: 

Weinwerk/_private/smarty/modifier.sortby.php

Nun habe ich das Problem, dass mir Shopware immer ein Fehler auf der Bestellbestätigungsseite auswirft, sofern ich einen Bestellabschluss als Gast durchführe. 

Logge ich mich als Kunde ein und führe eine Bestellung durch klappt es problemlos. 

Sofern ich als Gast eine Bestellung abschließen möchte, bekomme ich immer folgenden Fehler im Frontend. 

Syntax Error in template "/html/shopware_produktiv/themes/Frontend/Weinwerk/frontend/index/sidebar-categories.tpl" on line 5 "{call name=categories categories=$category.subcategories|@sortby:"name" level=$level+1}" unknown modifier "sortby" in engine/Library/Smarty/sysplugins/smarty_internal_templatecompilerbase.php on line 657

Die genaue Fehlermeldung lautet: 

#0 engine/Library/Smarty/sysplugins/smarty_internal_compile_private_modifier.php(132): Smarty_Internal_TemplateCompilerBase->trigger_template_error('unknown modifie...', 5)
#1 engine/Library/Smarty/sysplugins/smarty_internal_templatecompilerbase.php(465): Smarty_Internal_Compile_Private_Modifier->compile(Array, Object(Smarty_Internal_SmartyTemplateCompiler), Array, NULL, NULL)
#2 engine/Library/Smarty/sysplugins/smarty_internal_templatecompilerbase.php(249): Smarty_Internal_TemplateCompilerBase->callTagCompiler('private_modifie...', Array, Array)
#3 engine/Library/Smarty/sysplugins/smarty_internal_templateparser.php(2578): Smarty_Internal_TemplateCompilerBase->compileTag('private_modifie...', Array, Array)
#4 engine/Library/Smarty/sysplugins/smarty_internal_templateparser.php(3101): Smarty_Internal_Templateparser->yy_r84()
#5 engine/Library/Smarty/sysplugins/smarty_internal_templateparser.php(3201): Smarty_Internal_Templateparser->yy_reduce(121)
#6 engine/Library/Smarty/sysplugins/smarty_internal_smartytemplatecompiler.php(105): Smarty_Internal_Templateparser->doParse(35, ' level=')
#7 engine/Library/Smarty/sysplugins/smarty_internal_templatecompilerbase.php(192): Smarty_Internal_SmartyTemplateCompiler->doCompile('\r\n {if $Cont...')
#8 engine/Library/Smarty/sysplugins/smarty_internal_compile_block.php(197): Smarty_Internal_TemplateCompilerBase->compileTemplate(Object(Smarty_Internal_Template))
#9 engine/Library/Smarty/sysplugins/smarty_internal_compile_block.php(255): Smarty_Internal_Compile_Block::compileChildBlock(Object(Smarty_Internal_SmartyTemplateCompiler), 'frontend_index_...')
#10 engine/Library/Smarty/sysplugins/smarty_internal_templatecompilerbase.php(465): Smarty_Internal_Compile_Blockclose->compile(Array, Object(Smarty_Internal_SmartyTemplateCompiler), Array, NULL, NULL)
#11 engine/Library/Smarty/sysplugins/smarty_internal_templatecompilerbase.php(249): Smarty_Internal_TemplateCompilerBase->callTagCompiler('blockclose', Array, Array)
#12 engine/Library/Smarty/sysplugins/smarty_internal_templateparser.php(2493): Smarty_Internal_TemplateCompilerBase->compileTag('blockclose', Array)
#13 engine/Library/Smarty/sysplugins/smarty_internal_templateparser.php(3101): Smarty_Internal_Templateparser->yy_r58()
#14 engine/Library/Smarty/sysplugins/smarty_internal_templateparser.php(3201): Smarty_Internal_Templateparser->yy_reduce(58)
#15 engine/Library/Smarty/sysplugins/smarty_internal_smartytemplatecompiler.php(105): Smarty_Internal_Templateparser->doParse(10, '\n ...')
#16 engine/Library/Smarty/sysplugins/smarty_internal_templatecompilerbase.php(192): Smarty_Internal_SmartyTemplateCompiler->doCompile('{* Maincategori...')
#17 engine/Library/Smarty/sysplugins/smarty_internal_compile_include.php(146): Smarty_Internal_TemplateCompilerBase->compileTemplate(Object(Enlight_Template_Default))
#18 engine/Library/Smarty/sysplugins/smarty_internal_templatecompilerbase.php(465): Smarty_Internal_Compile_Include->compile(Array, Object(Smarty_Internal_SmartyTemplateCompiler), Array, NULL, NULL)
#19 engine/Library/Smarty/sysplugins/smarty_internal_templatecompilerbase.php(249): Smarty_Internal_TemplateCompilerBase->callTagCompiler('include', Array, Array)
#20 engine/Library/Smarty/sysplugins/smarty_internal_templateparser.php(2388): Smarty_Internal_TemplateCompilerBase->compileTag('include', Array)
#21 engine/Library/Smarty/sysplugins/smarty_internal_templateparser.php(3101): Smarty_Internal_Templateparser->yy_r36()
#22 engine/Library/Smarty/sysplugins/smarty_internal_templateparser.php(3201): Smarty_Internal_Templateparser->yy_reduce(36)
#23 engine/Library/Smarty/sysplugins/smarty_internal_smartytemplatecompiler.php(105): Smarty_Internal_Templateparser->doParse(10, '\n ...')
#24 engine/Library/Smarty/sysplugins/smarty_internal_templatecompilerbase.php(192): Smarty_Internal_SmartyTemplateCompiler->doCompile('compileTemplate(Object(Enlight_Template_Default))
#34 engine/Library/Smarty/sysplugins/smarty_internal_templatebase.php(155): Smarty_Internal_Template->compileTemplateSource()
#35 engine/Library/Enlight/View/Default.php(274): Smarty_Internal_TemplateBase->fetch()
#36 engine/Library/Enlight/Controller/Plugins/ViewRenderer/Bootstrap.php(216): Enlight_View_Default->render(Object(Enlight_Template_Default))
#37 engine/Library/Enlight/Controller/Plugins/ViewRenderer/Bootstrap.php(242): Enlight_Controller_Plugins_ViewRenderer_Bootstrap->renderTemplate(Object(Enlight_Template_Default))
#38 engine/Library/Enlight/Controller/Plugins/ViewRenderer/Bootstrap.php(136): Enlight_Controller_Plugins_ViewRenderer_Bootstrap->render()
#39 [internal function]: Enlight_Controller_Plugins_ViewRenderer_Bootstrap->onPostDispatch(Object(Enlight_Controller_ActionEventArgs))
#40 engine/Library/Enlight/Event/Handler/Default.php(91): call_user_func(Array, Object(Enlight_Controller_ActionEventArgs))
#41 engine/Library/Enlight/Event/EventManager.php(214): Enlight_Event_Handler_Default->execute(Object(Enlight_Controller_ActionEventArgs))
#42 engine/Library/Enlight/Controller/Action.php(202): Enlight_Event_EventManager->notify('Enlight_Control...', Object(Enlight_Controller_ActionEventArgs))
#43 engine/Library/Enlight/Controller/Dispatcher/Default.php(523): Enlight_Controller_Action->dispatch('finishAction')
#44 engine/Library/Enlight/Controller/Front.php(223): Enlight_Controller_Dispatcher_Default->dispatch(Object(Enlight_Controller_Request_RequestHttp), Object(Enlight_Controller_Response_ResponseHttp))
#45 engine/Shopware/Kernel.php(177): Enlight_Controller_Front->dispatch()
#46 vendor/symfony/http-kernel/HttpCache/HttpCache.php(487): Shopware\Kernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#47 engine/Shopware/Components/HttpCache/AppCache.php(255): Symfony\Component\HttpKernel\HttpCache\HttpCache->forward(Object(Symfony\Component\HttpFoundation\Request), true, NULL)
#48 vendor/symfony/http-kernel/HttpCache/HttpCache.php(444): Shopware\Components\HttpCache\AppCache->forward(Object(Symfony\Component\HttpFoundation\Request), true)
#49 vendor/symfony/http-kernel/HttpCache/HttpCache.php(344): Symfony\Component\HttpKernel\HttpCache\HttpCache->fetch(Object(Symfony\Component\HttpFoundation\Request), true)
#50 engine/Shopware/Components/HttpCache/AppCache.php(178): Symfony\Component\HttpKernel\HttpCache\HttpCache->lookup(Object(Symfony\Component\HttpFoundation\Request), true)
#51 vendor/symfony/http-kernel/HttpCache/HttpCache.php(210): Shopware\Components\HttpCache\AppCache->lookup(Object(Symfony\Component\HttpFoundation\Request), true)
#52 engine/Shopware/Components/HttpCache/AppCache.php(114): Symfony\Component\HttpKernel\HttpCache\HttpCache->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#53 shopware.php(113): Shopware\Components\HttpCache\AppCache->handle(Object(Symfony\Component\HttpFoundation\Request))
#54 {main}

Hat von euch jemand eine Idee warum das Verhalten hier unterschiedlich ist?

Danke für eure Tipps.

Liebe Grüße

Kevin

Dazu gibt es ein Ticket:

@ottscho schrieb:

Dazu gibt es ein Ticket:

https://issues.shopware.com/issues/SW-15287

Danke für das Ticket. Mein Vote ging hierfür auch gerade raus. Ist dir ein Workaround hierzu bekannt, wie ich den Modifier dennoch nutzen kann ohne das es zu der lästigen Fehlermeldung kommt? Sonst bleibt mir leider nichts anderes übrig als den wiederrauszunehmen.

Danke.

Liebe Grüße

Kevin 

Hat zufällig jemand von @shopware‍ eine Idee wie man der Meldung aus dem Weg gehen kann? 

Ansonsten bleibt mir nach jetzigem Stand nur die Möglichkeit den Modifier rauszunehmen :( 

falls es hilft, ich addiere eine smarty plugin aus eine shopware plugin aus so:

class FooBar extends Shopware\Components\Plugin
{
    public static function getSubscribedEvents ()
    {
        return [
            'Enlight_Controller_Action_PostDispatchSecure'
            => 'onFrontendPostDispatchSecure'
        ];
    }
    public function onFrontendPostDispatchSecure (\Enlight_Event_EventArgs $args)
    {
        $template = $this->container->get('Template');
        $template->addPluginsDir($this->getPath() . '/meine/smarty/plugindir/');
    }
}

hab aber nicht probiert ob diese auch nicht in oben gennannten routes funktioniert.

@wontfix schrieb:

falls es hilft, ich addiere eine smarty plugin aus eine shopware plugin aus so:

class FooBar extends Shopware\Components\Plugin
{
public static function getSubscribedEvents ()
{
return [
‚Enlight_Controller_Action_PostDispatchSecure‘
=> ‚onFrontendPostDispatchSecure‘
];
}
public function onFrontendPostDispatchSecure (\Enlight_Event_EventArgs $args)
{
$template = $this->container->get(‚Template‘);
$template->addPluginsDir($this->getPath() . ‚/meine/smarty/plugindir/‘);
}
}

hab aber nicht probiert ob diese auch nicht in oben gennannten routes funktioniert.

Hey,

vielen lieben Dank für deinen Tipp. Nach meinem Urlaub habe ich hierfür nun einmal ein kleines Plugin geschriebe. Schon schade aber, dass für die Funktionalität ein eigenes Plugin benötigt wird.

Ich kann den Fehler nicht mehr nachstellen, nachdem ich folgendes kleine Plugin in Shopware bereitgestellt habe.

 'onFrontendPostDispatchSecure'
        ];
    }

    /**
     * @param Enlight_Event_EventArgs $arguments
     */
    public function onFrontendPostDispatchSecure(Enlight_Event_EventArgs $arguments)
    {
        $template = $this->container->get('Template');
        $template->addPluginsDir($this->getPath() . '/smarty/plugins/');
    }

}

 In dem entsprechenden Verzeichnis liegt dann meine smarty php Datei für den Modifier…

Liebe Grüße

Kevin

Das klappt so übrigens doch leider nicht. Habe den Fehler in Shopware 5.2.12 wieder reproduzieren können. Mal sehen ob ich noch zu einer Lösung komme (:

Liebe Grüße

Kevin