Optionen eines Benutzerdefinierten Select-Feldes auslesen

Ist es möglich für die Darstellung eines benutzerdefinierten Select-Feldes die options im twig-Template auszulesen? Über context.salesChannel.customFields hatte ich bisher keinen Erfolg, da customFields: null.
Es geht darum das Select-Feld im Registrierungsformular anzuzeigen. Das Feld wurde wie folgt generiert.

private function createCustomFields(Context $context): void
    {
        if ($this->customFieldSetExists($context)) {
            return;
        }

        $customFieldSetRepository = $this->container->get('custom_field_set.repository');
        $customFieldSetRepository->create([
            [
                'id' => '294865e5c81b434d8349db9ea6b4e135',
                'name' => 'my_custom_field_set',
                'customFields' => [
                    [
                        'name' => 'my_custom_field',
                        'type' => CustomFieldTypes::SELECT,
                        'config' => [
                            'label' => 'MyCustomField',
                            'options' => [
                                [
                                    'value' => '294865e5c81b434d8349db9ea6b4e487',
                                    'name' => 'my_custom_field_option_1', 
                                ],
                                [
                                    'value' => '1ce5abe719a04346930c7e43514ed4f1',
                                    'name' => 'my_custom_field_option_2',
                                ],
                            ],
                            'customFieldType' => 'select',
                            'componentName' => 'sw-single-select',
                            'customFieldPosition' => 1,
                        ],
                    ],
                ]
            ],
        ], $context);
    }

Das customField hängt ja an keinem Entity dran, dann wird es auch nie geladen. Dann musst du per Subscriber selbst dafür sorgen, dass es an das Frontend übergeben wird.

Hallo Max, vielen Dank für deine Antwort. Hast du eine Idee wie das aussehen könnte. Ich probiere das gerade schon die ganze Zeit.

Das hatte ich auch schon gelesen. Mir ist aber nicht ganz klar wie genau ich innerhalb der Subscriber-Funktion an die customFields kommen?

Du lädst in deinem construct__ das RepositoryInterface, suchst dann nach deinen customFields und übergibst diese dann ans Frontend.

Im construct__ vom Plugin oder vom Subscriber. Ich bin relativ neu bei Shopware/Php. Mit einem kurzen Snippet würdest du mir sehr helfen. Danke Max.

Edit: Danke. Habs: Data Abstraction Layer - Shopware Developer

Ein Frage noch zu diesem Teil. Ich habe jetzt das EntityRepositoryInterface.

    public function __construct (EntityRepositoryInterface $customerRepository)
    {
        $this->customerRepository = $customerRepository;
    }

Wie bekomme ich da die customFields?

Wie kommst du auf den Befehl $this->customerRepository->getCustomFields()?

Du benötigst natürlich auch das custom_field_set.repository. Auch in der XML ändern!

1 „Gefällt mir“

Vielen Dank! Es hat jetzt alles geklappt!