Администратор префикса Magento 2.3 не отображается в раскрывающемся списке


Мы используем метод префикса показа клиентов по умолчанию. Это прекрасно работает на интерфейсе.

Но в панели администратора префикс в клиенте отображается в виде открытого текстового поля ввода, а не в виде выпадающего списка с отображаемыми параметрами.

По какой-то причине префикс в панели администратора отображается плохо.

Как мы можем это решить?

enter image description here

enter image description here

Author: JGeer, 2020-08-20

1 answers

Вам нужно будет расширить/настроить формы, которые используются в бэкэнде для отображения форм клиента.

Например, customer_address_form.xml может быть настроен с помощью:

<?xml version="1.0" encoding="UTF-8"?>
<form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd" component="Magento_Customer/js/form/components/form">
    <fieldset name="general">
        <field name="prefix" sortOrder="10" formElement="select">
            <formElements>
                <select>
                    <settings>
                        <options class="Mbs\PrefixBecomesSelect\Model\Config\PrefixOptions"/>
                    </settings>
                </select>
            </formElements>
        </field>
    </fieldset>
</form>

И customer_form.xml настраивается с помощью:

<?xml version="1.0" encoding="UTF-8"?>
<form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
    <fieldset name="customer">
        <field name="prefix" formElement="select">
            <formElements>
                <select>
                    <settings>
                        <options class="Mbs\PrefixBecomesSelect\Model\Config\PrefixOptions"/>
                    </settings>
                </select>
            </formElements>
        </field>
    </fieldset>
</form>

Модель, используемая в этих настройках, как показано ниже:

<?php

namespace Mbs\PrefixBecomesSelect\Model\Config;

class PrefixOptions implements \Magento\Framework\Data\OptionSourceInterface
{
    /**
     * @var \Magento\Customer\Model\Options
     */
    private $options;

    public function __construct(
        \Magento\Customer\Model\Options $options
    ) {
        $this->options = $options;
    }

    /**
     * @return array
     */
    public function toOptionArray()
    {
        $rawOptions = $this->options->getNamePrefixOptions();

        $options[] = ['value' => '', 'label' => '-'];

        foreach ($rawOptions as $label => $value) {
            $options[] = ['value' => $value, 'label' => $label];
        }

        return $options;
    }
}
 3
Author: Herve Tribouilloy, 2020-08-30 14:53:06