Ein Widget in Email Vorlage produziert "...FUNCTIONNOTFOUND execute"

Hallo zusammen,

ich will in der Bestellbestätigungs E-Mail noch etwas hinzufügen. Dafür habe ein Widget angelegt, ein Block im E-Mail Template angepasst und dort den Widget Call hinzugefügt. Das hat jedoch den Bestellprozess kaputt gemacht: manchmal wird auf die Startseite weitergeleitet und dabei ein Fehler in Exception Log geschrieben, manchmal geht die Bestellung durch, aber keine Email wird gesendet.

Hätte jemand Ideen woran das liegt?

Hier nochmal die Details:

Shop: Oxid CE 6.0.4
Theme: Wave

Fehlermeldung in EXCEPTION_LOG

    [18 Nov 09:55:45.088340 2019] [exception] [type OxidEsales\Eshop\Core\Exception\SystemComponentException] [code 0] [file /home/mojnkurp/www.mojotest.de/endereco/Felder/CE_V6_Entwicklung/vendor/oxid-esales/oxideshop-ce/source/Core/UtilsObject.php] [line 231] [message ERROR_MESSAGE_SYSTEMCOMPONENT_FUNCTIONNOTFOUND execute]
    [18 Nov 09:55:45.088340 2019] [exception] [stacktrace] #0 /home/mojnkurp/www.mojotest.de/endereco/Felder/CE_V6_Entwicklung/source/oxfunctions.php(101): OxidEsales\EshopCommunity\Core\UtilsObject->oxNew('OxidEsales\\Esho...')
    [18 Nov 09:55:45.088340 2019] [exception] [stacktrace] #1 /home/mojnkurp/www.mojotest.de/endereco/Felder/CE_V6_Entwicklung/vendor/oxid-esales/oxideshop-ce/source/Core/Controller/BaseController.php(533): oxNew('OxidEsales\\Esho...')
    [18 Nov 09:55:45.088340 2019] [exception] [stacktrace] #2 /home/mojnkurp/www.mojotest.de/endereco/Felder/CE_V6_Entwicklung/vendor/oxid-esales/oxideshop-ce/source/Core/ShopControl.php(332): OxidEsales\EshopCommunity\Core\Controller\BaseController->executeFunction('execute')
    [18 Nov 09:55:45.088340 2019] [exception] [stacktrace] #3 /home/mojnkurp/www.mojotest.de/endereco/Felder/CE_V6_Entwicklung/vendor/oxid-esales/oxideshop-ce/source/Core/ShopControl.php(274): OxidEsales\EshopCommunity\Core\ShopControl->executeAction(Object(Endereco\DynamicFieldsClient\Component\Widget\GeneralAddressWidget), 'execute')
    [18 Nov 09:55:45.088340 2019] [exception] [stacktrace] #4 /home/mojnkurp/www.mojotest.de/endereco/Felder/CE_V6_Entwicklung/vendor/oxid-esales/oxideshop-ce/source/Core/ShopControl.php(137): OxidEsales\EshopCommunity\Core\ShopControl->_process('Endereco\\Dynami...', 'execute', Array, NULL)
    [18 Nov 09:55:45.088340 2019] [exception] [stacktrace] #5 /home/mojnkurp/www.mojotest.de/endereco/Felder/CE_V6_Entwicklung/vendor/oxid-esales/oxideshop-ce/source/Core/WidgetControl.php(62): OxidEsales\EshopCommunity\Core\ShopControl->start('enderecodf_addr...', 'execute', Array, NULL)
    [18 Nov 09:55:45.088340 2019] [exception] [stacktrace] #6 /home/mojnkurp/www.mojotest.de/endereco/Felder/CE_V6_Entwicklung/vendor/oxid-esales/oxideshop-ce/source/Core/Smarty/Plugin/function.oxid_include_widget.php(31): OxidEsales\EshopCommunity\Core\WidgetControl->start('enderecodf_addr...', NULL, Array, NULL)
    [18 Nov 09:55:45.088340 2019] [exception] [stacktrace] #7 /home/mojnkurp/www.mojotest.de/endereco/Felder/CE_V6_Entwicklung/source/tmp/smarty/aab4373d7581fd3fa4dbdb33502a8328^%%D3^D37^D37E7128%%order_cust.tpl.php(59): smarty_function_oxid_include_widget(Array, Object(Smarty))
    [18 Nov 09:55:45.088340 2019] [exception] [stacktrace] #8 /home/mojnkurp/www.mojotest.de/endereco/Felder/CE_V6_Entwicklung/vendor/smarty/smarty/libs/Smarty.class.php(1270): include('/home/mojnkurp/...')
    [18 Nov 09:55:45.088340 2019] [exception] [stacktrace] #9 /home/mojnkurp/www.mojotest.de/endereco/Felder/CE_V6_Entwicklung/vendor/oxid-esales/oxideshop-ce/source/Core/Email.php(545): Smarty->fetch('email/html/orde...')
    [18 Nov 09:55:45.088340 2019] [exception] [stacktrace] #10 /home/mojnkurp/www.mojotest.de/endereco/Felder/CE_V6_Entwicklung/vendor/oxid-esales/oxideshop-ce/source/Application/Model/Order.php(1693): OxidEsales\EshopCommunity\Core\Email->sendOrderEmailToUser(Object(OxidEsales\Eshop\Application\Model\Order))
    [18 Nov 09:55:45.088340 2019] [exception] [stacktrace] #11 /home/mojnkurp/www.mojotest.de/endereco/Felder/CE_V6_Entwicklung/vendor/oxid-esales/oxideshop-ce/source/Application/Model/Order.php(560): OxidEsales\EshopCommunity\Application\Model\Order->_sendOrderByEmail(Object(Endereco\OxidClient\Model\User), Object(OxidEsales\Eshop\Application\Model\Basket), Object(OxidEsales\Eshop\Application\Model\UserPayment))
    [18 Nov 09:55:45.088340 2019] [exception] [stacktrace] #12 /home/mojnkurp/www.mojotest.de/endereco/Felder/CE_V6_Entwicklung/vendor/oxid-esales/oxideshop-ce/source/Application/Controller/OrderController.php(217): OxidEsales\EshopCommunity\Application\Model\Order->finalizeOrder(Object(OxidEsales\Eshop\Application\Model\Basket), Object(Endereco\OxidClient\Model\User))
    [18 Nov 09:55:45.088340 2019] [exception] [stacktrace] #13 /home/mojnkurp/www.mojotest.de/endereco/Felder/CE_V6_Entwicklung/vendor/oxid-esales/oxideshop-ce/source/Core/Controller/BaseController.php(523): OxidEsales\EshopCommunity\Application\Controller\OrderController->execute()
    [18 Nov 09:55:45.088340 2019] [exception] [stacktrace] #14 /home/mojnkurp/www.mojotest.de/endereco/Felder/CE_V6_Entwicklung/vendor/oxid-esales/oxideshop-ce/source/Core/ShopControl.php(332): OxidEsales\EshopCommunity\Core\Controller\BaseController->executeFunction('execute')
    [18 Nov 09:55:45.088340 2019] [exception] [stacktrace] #15 /home/mojnkurp/www.mojotest.de/endereco/Felder/CE_V6_Entwicklung/vendor/oxid-esales/oxideshop-ce/source/Core/ShopControl.php(274): OxidEsales\EshopCommunity\Core\ShopControl->executeAction(Object(OxidEsales\Eshop\Application\Controller\OrderController), 'execute')
    [18 Nov 09:55:45.088340 2019] [exception] [stacktrace] #16 /home/mojnkurp/www.mojotest.de/endereco/Felder/CE_V6_Entwicklung/vendor/oxid-esales/oxideshop-ce/source/Core/ShopControl.php(137): OxidEsales\EshopCommunity\Core\ShopControl->_process('OxidEsales\\Esho...', 'execute', NULL, NULL)
    [18 Nov 09:55:45.088340 2019] [exception] [stacktrace] #17 /home/mojnkurp/www.mojotest.de/endereco/Felder/CE_V6_Entwicklung/vendor/oxid-esales/oxideshop-ce/source/Core/Oxid.php(26): OxidEsales\EshopCommunity\Core\ShopControl->start()
    [18 Nov 09:55:45.088340 2019] [exception] [stacktrace] #18 /home/mojnkurp/www.mojotest.de/endereco/Felder/CE_V6_Entwicklung/source/index.php(15): OxidEsales\EshopCommunity\Core\Oxid::run()
    [18 Nov 09:55:45.088340 2019] [exception] [stacktrace] #19 {main}

Hier noch der Code in metadata.php

$sMetadataVersion = '2.0';
$aModule = array(
    [...],
    'controllers'  => array(
        'enderecodf_address_format_widget' => \Endereco\DynamicFieldsClient\Component\Widget\GeneralAddressWidget::class,
    ),
    'blocks' => array(
        array(
            'template' => 'email/html/order_cust.tpl',
            'block' => 'email_html_order_cust_address',
            'file' => '/application/views/blocks/format/enderecodf_email_html_order_cust_address.tpl',
        ),
    ),
    'templates' => array(
        'enderecodftest.tpl' => 'endereco/enderecodynamicfields/application/views/blocks/format/enderecodftest.tpl',
    ),
);

Code in enderecodf_email_html_order_cust_address.tpl

Test 2
[{oxid_include_widget cl="enderecodf_address_format_widget"}]
[{$smarty.block.parent}]

Sagt doch eigentlich alles.

1 Like

Für mich ist es leider nicht so offensichtlich.
Hier ist der Code aus dem Widget:

namespace Endereco\DynamicFieldsClient\Component\Widget;

class GeneralAddressWidget extends \OxidEsales\Eshop\Application\Component\Widget\WidgetController
{
    /**
     * @var string Widget template
     */
    protected $_sThisTemplate = 'enderecodftest.tpl';

    /**
     * Getter for protected property.
     *
     * @return string
     */
    public function getThisTemplate()
    {
        return $this->_sThisTemplate;
    }

    /**
     * Render
     *
     * @return string Template name.
     */
    public function render()
    {
        parent::render();
        return $this->getThisTemplate();
    }
}

Was genau mache ich falsch?

Für meine Begriffe ist der Ansatz falsch. Du willst einer E-Mail etwas hinzufügen. Dazu kannst, sofern etwas noch nicht vorhandenes hinzukommt, die entsprechende Klasse (Order / Email ?) und/oder die Methode erweitern (metadata extend) und über einen Block den Wert etc. einfügen.