Zusatzfelder im Backend bearbeitbar machen / nicht readonly

Hi zusammen,

wenn ich über ein Plugin ein Zusatzfeld für die Bestellungen anlege:

/**
     * @throws \Exception
     * Installs Order field. Since 6.0.0
     */
    public function installOrderField() {

        $customFieldSetRepository = $this->container->get('custom_field_set.repository');

        $customFieldSetRepository->create([
            [
                'name' => 'dtgs_delivery_date_set',
                'global' => true,
                'config' => [
                    'label' => [
                        'de-DE' => 'Wunsch-Lieferdatum',
                        'en-GB' => 'Custom Delivery Date'
                    ]
                ],
                'relations' => [[
                    'entityName' => 'order'
                ]],
                'customFields' => [
                    ['name' => 'dtgs_delivery_date', 'type' => CustomFieldTypes::DATETIME],
                ]
            ]
        ], Context::createDefaultContext());

    }

ist es danach zwar in den Einstellungen und auch verfügbar und in jeder Order vorhanden, ich kann es auch über das Plugin befüllen. Im Backend selbst ist das Feld aber immer readonly, sodass die Shopbetreiber*innen es nicht bearbeiten/verändern können. Gibt es da eine einfache Möglichkeit, dies umzustellen?

Danke euch,
Constantin

Setze den Wert „global“ auf false bzw. nicht angeben

1 „Gefällt mir“

Hi @trade ,

1000 Dank für die schnelle Antwort! Das werde ich direkt ausprobieren. Was ist denn der Unterschied zwischen globalen und nicht-globalen Feldern? Ich finde da nichts zu. Ich nehme an, dass ich den Code aus einem alten Tutorial kopiert habe. Wird die Umstellung Auswirkungen auf die Funktionalität haben?

LG,
Constantin

Ich habe es nun mit folgendem Code geändert:

$customFieldSetRepository = $this->container->get('custom_field_set.repository');

        $crit = new Criteria();
        $crit->addFilter(new EqualsFilter('name', 'dtgs_delivery_date_set'));

        $result = $customFieldSetRepository->search($crit, Context::createDefaultContext());

        $customFieldSetRepository->upsert([
            [
                'id' => $result->first()->getId(),
                'global' => false
            ]
        ], Context::createDefaultContext());

Das Custom Field ist nicht mehr global, d.h. ich kann die Einstellungen bearbeiten - das will ich aber nicht unbedingt. Ich möchte den Wert in der Bestellung, in diesem Fall das bei der Bestellung angelegte Datum bearbeiten, siehe Screenshot:

Das ist allerdings weiterhin nicht möglich, es bleibt readonly.

Vielleicht gibt es weitere Ideen?

Ich kann Zusatzfelder in der Bestellung ändern, wenn ich vorher auf „Bearbeiten“ klicke.

Hatte vielleicht auch gar nichts mit dem „global“ zu tun. Globale Zusatzfelder können von Plugins angelegt werden und vom Benutzer im Dashboard nicht gelöscht/bearbeitet werden.

Hey @trade ,

ich habe das Gefühl, es hat etwas mit dem Typ des Feldes zu tun. Unter 6.4.4.1 konnte ich den Datepicker nicht auslösen, ich habe jetzt auf 6.4.5.1 aktualisiert und kann es jetzt auch über die „normale“ Bearbeiten-Funktion ändern.

Danke für deine Mühe.