Plugin Konfiguration: Formular Store für Select-Feld

Hallo zusammen!

Ich möchte in meiner Plugin-Konfiguration ein Select-Feld zum Auswählen eines Formulars anzeigen. Dafür habe ich folgendes Element angelegt:

    ...
    ...
    Shopware.store.Form

Also habe ich sowohl die Kurzform „Shopware.store.Form“, als auch die Langform „Shopware.apps.Base.store.Form“ ausprobiert. Beim Öffnen der Konfiguration kommt keine Fehlermeldung, allerdings werden keine Optionen in das Select-Feld geladen. Also wenn ich auf das Select-Feld klicke, ist dort nichts, was ich auswählen kann. Formulare existieren aber auf jeden Fall. Kann mir jemand sagen, woran das liegt? Ist der Store nicht richtig?

Hallo iNono,

 

hier fehlt noch das value tag.

Versuch mal folgendes:

    ... 
    ... 
    Shopware.store.Form 

Dann solltest Du die Formulare im DropDown sehen.

Via options Tag  kannst Du sogar noch das valueField und displayField setzen.

@MrMDeluxe‍ Danke für die Antwort, allerdings stimmt das nicht ganz. Ich habe es genau so versucht und dann kommt beim Plugin-Update folgender Fehler:

Unable to parse file “/project/plugins-custom/MyPlugin/Resources/config.xml”. Message: [ERROR 1871] Element ‘value’: This element is not expected. Expected is ( options ). (in /project/shopware/ - line 28, column 0)

Was ich jetzt noch gemacht habe ist, dass ich das “select” durch “combo” ersetzt habe, da das “select” glaube ich nur für statische Werte ist und “combo” für Stores. Also so entnehme ich das mal von hier. Es klappt aber leider immer noch nicht.

Hier ist eine config.xml die ich aktuell benutze, um eine Kundengruppe via Plugin config auszuwählen:

            customergroup
            Kundengruppe
            
            
            Shopware.apps.Base.store.CustomerGroup
            
                false
                key
                name

Die funktioniert bei mir…

@MrMDeluxe‍ Ja mit einem anderen Store (article) klappt es bei mir ja auch. Nur nicht mit dem Store für die Formulare. Könntest du bei dir mal testen, ob es mit dem Form Store klappt?

Mit dem Form Store klappt es auch.

Du hast aber den falschen Store genommen.

Nutze diesen hier, dann funktioniert es auch:

 Shopware.apps.Form.store.Form

Das hatte ich auch schon versucht. Da kommt dann bei mir dieser Fehler, wenn ich die Plugin-Konfiguration öffne:

Also so sieht jetzt mein Element aus:

    ...
    ...
    ...
    Shopware.apps.Form.store.Form
    
        false

Eine Idee, woran das liegen könnte?

Ja. Der Form Store und das Form Model werden standardmäßig nicht mitgeladen.

(Ich hatte die Formulare noch im backend geöffnet, daher hat es bei mir funktioniert…)

Du musst Dich also auch noch darum kümmern.

In der Datei backend/base/bootstrap.js sind folgende Einträge nicht vorhanden:

 {include file='backend/form/model/form.js'}

 {include file='backend/form/store/form.js'}

Wenn Du die mal testweise hinzufügst, siehst Du das es dann funktioniert.

Um das ganze via Plugin zu machen, könntest Du 

die Javascripts dann in folgendem Block: 

 {block name="backend/base/header/javascript"} via append hinzufügen.
1 Like

Vielen Dank, das hat funktioniert!

Also habe im Plugin die bootsrap.js (Resources/views/backend/bootstrap.js) erweitert:

//{block name="backend/index/application" append}
{include file='backend/form/model/form.js'}
{include file='backend/form/store/form.js'}
//{/block}

Und dann in der plugin.php:

...
public static function getSubscribedEvents()
{
    return [
        'Enlight_Controller_Action_PostDispatchSecure_Backend_Index' => 'onIndexPostDispatch',
    ];
}

/**
 * Load ext components that override/extend global things
 *
 * @param \Enlight_Controller_ActionEventArgs $args
 */
public function onIndexPostDispatch(\Enlight_Controller_ActionEventArgs $args)
{
    $controller = $args->getSubject();
    $view = $controller->View();

    $view->addTemplateDir($this->getPath() . '/Resources/views/');
    $view->extendsTemplate('backend/bootstrap.js');
}

...

 

1 Like