Startseite
NexoPOS

Fußzeilenanpassung

Ab NexoPOS 5.3 können Sie benutzerdefinierte Vue-Komponenten im Footer eines beliebigen Settings-Objekts rendern. Die Idee ist, eine Möglichkeit zu schaffen, mit dem aktuell gerenderten Formular zu interagieren. Typischerweise nutzen Sie das dafür (unter anderem):

  • Standardeinstellungen zurücksetzen
  • Einstellungen anders speichern
  • usw.

Anforderungen

Bevor Sie eine benutzerdefinierte Komponente im Footer der Einstellungen laden, müssen Sie diese Komponente zuerst einfügen. Bei der Definition Ihrer Komponente stellt die Settings-Komponente dieser Komponente eine „parent“-Eigenschaft bereit, damit Sie auf das Einstellungsformular aus Ihrer Komponente zugreifen und die Einstellungen bei Bedarf schließlich neu laden können (console.log wird Ihr bester Freund sein).

<script type="module">
  nsExtraComponents.myExtraComponent = defineComponent({
      props: [ 'parent' ],
      template: `<ns-button>Hello World</ns-button>`,
      mounted() {
          // this.parent.loadSettingsForm() : Use this to refresh the form.
      }
  });
</script>

Komponente auf der Einstellungs-Klasse definieren

Wenn Ihr Modul Settings-Klassen definiert, verwenden wir diese, um unsere benutzerdefinierten Schaltflächen hinzuzufügen. Eine typische Settings-Klasse sieht etwa so aus:

<?php
namespace Modules\MyModule\Settings;

use App\Services\SettingsPage;
use App\Classes\SettingForm;

class ModuleSettings extends SettingsPage
{
    const IDENTIFIER = 'my-module-settings';
    const AUTOLAOD = true;
  
    public function __construct()
    {
          $this->form   =   SettingForm::form(
              title: __m( 'Your Setting Title', 'MyModule' ),
              description: __m( 'Your module settings description', 'MyModule' ),
              tabs: SettingForm::tabs(
                  SettingForm::tab(
                      label: __m( 'Base Settings', 'MyModule' ),
                      identifier: 'base-settings',
                      fields: SettingForm::fields(
                          FormInput::text(
                              label: __( 'Email' ),
                              name: 'email'
                          )
                      )
                  )
              )
          );
    }
}

Nun fügen wir im Abschnitt „tab“ eine neue Untersektion „footer“ hinzu, die „extraComponents“ unterstützt. Dabei wird ein Array von Strings definiert (das sind die Namen der Vue-Komponenten, die Sie oben im „nsExtraComponents“-Bereich definiert haben). In den obigen Einstellungen haben wir „myExtraComponent“ als Namen unserer Vue-Komponente verwendet; genau das werden wir verwenden.

<?php
namespace Modules\MyModule\Settings;

use App\Services\SettingsPage;
use App\Classes\SettingForm;

class ModuleSettings extends SettingsPage
{
    const IDENTIFIER = 'my-module-settings';
    const AUTOLAOD = true;
  
    public function __construct()
    {
          $this->form   =   SettingForm::form(
              title: __m( 'Your Setting Title', 'MyModule' ),
              description: __m( 'Your module settings description', 'MyModule' ),
              tabs: SettingForm::tabs(
                  SettingForm::tab(
                      label: __m( 'Base Settings', 'MyModule' ),
                      identifier: 'base-settings',
                      footer: SettingForm::tabFooter(
                          extraComponents: [ 'myExtraComponent' ] // <= we define the component here
                      ),
                      fields: SettingForm::fields(
                          FormInput::text(
                              label: __( 'Email' ),
                              name: 'email'
                          )
                      )
                  )
              )
          );
    }
}

Wir sollten eine Einstellung haben, die so aussieht.

settings-nexopos-footer