Snippets in Theme.php funktionieren nur teilweise

Hallo zusammen,

ich versuche schon seit einiger Zeit mir eigene Felder in meinem Theme zu erstellen. Leider hapert es etwas mit dem Einbinden der Snippets. Das funktioniert nur teilweise.
Ich habe dazu die Datei config.ini im Ordner „MeinTheme/_private“ angelegt. In der Datei Theme.php gebe ich z.B. folgendes ein:

$chk = $this->createCheckboxField(
     'meinFeld',
     ' __mein_field_label__',
     false,
     [
          'attributes'=>[
          'boxLabel'=>' __mein_field_desc__',
          'labelWidth'=>180,
          'lessCompatible' => false
          ]
     ]              
);
$fieldset->addElement($chk); 

In der Datei config.ini steht dann folgendes:

mein_field_label='Mein Label'
mein_field_desc='Meine Beschreibung'

Die Bezeichnung vor der Checkbox wird ordnungsgemäß ausgegeben. Nur nicht was hinter der Checkbox erscheint. Dort steht dann nur „__mein_field_desc__“

Woran kann das liegen?

Gruß Heiko

Moin Moin,

vermutlich hast Du das Problem mittlerweile selbst gelöst, aber für die Nachwelt hier die Auflösung.

Stand Shopware 5.5.3 wird das Attribut boxLabel nicht so behandelt wie andere. Es ist aber trotzdem übersetzbar, und zwar wie folgt.

1. Übersetzung in der _private/snippets/backend/config.ini file anlegen

[de_DE]
my_box_label="Achtung Checkbox!"

[en_GB]
my_box_label="Look out, a checkbox!"

2. Neue Methode in der Theme.php anlegen

// Rest weggelassen weil kürzer

private function getSnippet($snippetName)
    {
        return Shopware()->Snippets()->getNamespace('themes/mein_theme_name/backend/config')->get($snippetName);
    }

Wichtig: Den Text „mein_theme_name“ mit dem Namen des eigenen Themes ersetzen (Ordnername, klein).

3. Neue Methode nutzen

// ... irgendwo in der createConfig Methode

$c = $this->createCheckboxField(
            'my_field',
            ' __my_field_label__',
            false,
            [
                'attributes' => [
                    'boxLabel' => $this->getSnippet('my_box_label'),
                    'labelWidth' => 180,
                    'lessCompatible' => false
                ]
            ]
        );

//...

Da dieses Vorgehen im Vergleich mit helpText und supportText natürlich unschön ist, habe ich einen internen Pullrequest erstellt, der dann ab (hoffentlich) 5.5.4 ermöglicht, einfach wie gewohnt zu übersetzen. Bis dahin und um mit älteren Versionen kompatibel zu bleiben, so machen wie oben.

Um nachzuhalten ob die Funktionalität bereits im Produkt ist oder nicht, an dieser Stelle muss dann analog zu den anderen Attributen auch das boxLabel auftauchen.

Gruß, Niklas