Wie kann ich auf Freitextfelder mit Smarty zugreifen?

Ich versuche auf meine eigens erstelleten Freitextfelder (über mein Plugin erstellt) im Frontend über Smarty zuzugreifen.
Das versuche ich über folgenden Codeschnippsel:

{$manufacturer->getAttributes()['core']->get('supplierscustomerid')}

Leider funktioniert das überhaupt nicht. Allerdings wenn ich im Controller Listing in die Action manufacturer folgendes paste:

print_r($manufacturer->getAttributes()['core']->get('supplierscustomerid'));
die();

sehe ich mein Freitextfeld. De facto ist also mein Ansatz mit Smarty überhaupt nicht verkehrt gewesen. Ich habe oft gelesen das Doctrine Unterstriche in Camel-Case
transformiert, weswegen ich die Namensgebung beim Freitextfeld im lowercase gehalten habe. Naja, es funktioniert nach wie vor leider nicht.
Über meinen PHP Code im Controller jedoch schon.

Das Freitextfeld füge ich wie folgt hinzu:

   public function createAttributes()
    {
        $service = Shopware()->Container()->get('shopware_attribute.crud_service');
        $service->update('s_articles_supplier_attributes', 'supplierscustomerid', 'text', [
            'label' => 'Kundennummer',
            'supportText' => '20016',
 
            //user has the opportunity to translate the attribute field for each shop
            'translatable' => true,
 
            //attribute will be displayed in the backend module
            'displayInBackend' => true,
 
            //numeric position for the backend view, sorted ascending
            'position' => 100,
 
            //user can modify the attribute in the free text field module
            'custom' => false
        ]);
    }

Ich wäre für jeden Denkansatz sehr dankbar.
Vielen Dank.

Das ist schon fast richtig :wink:

{$manufacturer->getAttributes('core')->get('supplierscustomerid')}

Das core muss als attribut an die funktion getAttributes übergeben werden.

1 „Gefällt mir“

Hallo,

Danke für deine Hilfe.

Wenn ich das allerdings so mache, brit die Seite ab zu laden ab der Stelle wo ich das nutze.

Das print_r von $manufacturer->getAttributes() sieht wie folgt aus:

Array
(
    [core] => Shopware\Bundle\StoreFrontBundle\Struct\Attribute Object
        (
            [storage:protected] => Array
                (
                    [id] => 1
                    [supplierID] => 1
                    [supplierscustomerid] => 20016
                )
 
        )
 
)

 

Bitte um Hilfe :confused:

Hallo @THCDev‍,

du bruchst nur diese ‘s’ am ende löchen.

 

{$manufacturer->getAttribute('core')->get('supplierscustomerid')}

also getAttribute nicht getAttributes .

VG,

Tel.: +49 755 - 183 990 00 | Web: http://enbit.de/

2 „Gefällt mir“

Hallo,

Vielen vielen Dank für deine Antwort.

Jetzt läuft es :slight_smile:

LG