Registrierungsformular ändern: Custom Fields und File Upload hinzufügen!

Hallo zusammen,

ich habe ein Problem, was sich aber in mehrere kleine Probleme zerlegen lässt. Leider habe ich allerdings noch keine Antwort auf mein Problem gefunden und ich zweifel an der Umsetzbarkeit!

Mein Ziel ist, dass ich gerne weitere Felder (als Pflichtfelder) beim Registrierungsformlar hinzufügen möchte sowie ein File Upload (Bild & PDF). Diese Felder sollen natürlich auch übermittelt und gespeichert werden. Ich habe zwar im Backend schon Custom Fields angelegt, muss die jetzt allerdings noch im Frontend anzeigen lassen und natürlich auch in der Datenbank speichern lassen.

Die Frage ist, wie mache ich das. Ich finde dazu leider keine Anleitung im Netz. Shopware 6 ist ja auch noch nicht so verbreitet.

MfG und Vielen Dank!

systemConfigService = $systemConfigService;
        $this->translator = $translator;
    }

    public static function getSubscribedEvents(): array
    {
        return [
            CustomerEvents::MAPPING_REGISTER_CUSTOMER => 'addVerpackG'
        ];
    }

    public function addVerpackG($event): void
    {

        $data = $event->getInput();

        $customer = $event->getOutput();

        if (!isset($customer['customFields'])) {
            $customer['customFields'] = [];
        }

        $customer['customFields']['moorl_verpack_g_customer_active'] = ($data->get('verpackG') !== null);

        $event->setOutput($customer);

    }

}

Es gibt ein Event dafür, bin mir ziemlich sicher, dass auch der File Upload damit möglich ist. CustomFields auf jeden Fall :wink:

 

 

1 „Gefällt mir“

Wo finde ich das in der Dokumentation?

Also muss ich als erstes das Custom Field im Backend anlegen und dann den Code personalisieren? Das wars?

Doku gibt es hierzu, Rest muss man sich erarbeiten:

https://docs.shopware.com/en/shopware-platform-dev-en/how-to/register-subscriber

https://docs.shopware.com/en/shopware-platform-dev-en/internals/core/data-abstraction-layer/custom-field

Vielen Dank!

Hast Du noch einen Tipp zum File Upload? Da Blicke ich leider gar nicht durch… Wie funktioniert das mit dem speichern des Dokumentes und wie kann ich es im Frontend und im Admin Dashboard wieder zur Verfügung stellen?

@FrazeColder‍
Also ich kann dir den Tipp geben, dass ich bei der selben Problemstellung (Dokument Speichern) mir einfach angeschaut habe was im Shopware core passiert, wenn ich eine Datei im Medien Manager hoch lade :smiley:

@FrazeColder schrieb:

Vielen Dank!

Hast Du noch einen Tipp zum File Upload? Da Blicke ich leider gar nicht durch… Wie funktioniert das mit dem speichern des Dokumentes und wie kann ich es im Frontend und im Admin Dashboard wieder zur Verfügung stellen?

Falls noch jemand Interesse an einem rudimentären Ansatz hat, hochgeladene Bilder (via Formularupload) der Medien Ansicht hinzuzufügen, folgendes hat bei mir funktioniert:
Zuerst Media Entity via Repository speichern und dann persistFileToMedia entsprechend aufrufen:

$this->mediaRepository->upsert(
    [
        [
            'id' => $customImageId,
            'mediaFolderId' => $customImageFolderId,
            'name' => 'my_custom_image'
        ]
    ],
    $systemContext
);

$mediaFile = new MediaFile(
    $_FILES[$image]['tmp_name'],
    $_FILES[$image]['type'],
    $extension,
    $_FILES[$image]['size']
);

$this->fileSaver->persistFileToMedia($mediaFile, 'my_custom_image', $customImageId, $systemContext);