Администратор префикса Magento 2.3 не отображается в раскрывающемся списке
Мы используем метод префикса показа клиентов по умолчанию. Это прекрасно работает на интерфейсе.
Но в панели администратора префикс в клиенте отображается в виде открытого текстового поля ввода, а не в виде выпадающего списка с отображаемыми параметрами.
По какой-то причине префикс в панели администратора отображается плохо.
Как мы можем это решить?
1
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