Thuộc tính khách hàng không hiển thị dưới dạng tài khoản khách hàng adminhtml trong Magento Enterprise 2.2.0


11

Tôi đã tạo mô-đun "Wgac_Subcription". Tôi muốn tạo thuộc tính khách hàng tùy chỉnh. Nó được liệt kê trong quản trị viên như trong hình bên dưới, nhưng không hiển thị dưới dạng adminhtml của khách hàng.

Wgac / Đăng ký / Cài đặt / InstallData.php

<?php
namespace Wgac\Subscription\Setup;

use Magento\Eav\Setup\EavSetup;
use Magento\Eav\Setup\EavSetupFactory;
use Magento\Customer\Model\Customer;
use Magento\Customer\Setup\CustomerSetupFactory;
use Magento\Eav\Model\Entity\Attribute\Set as AttributeSet;
use Magento\Eav\Model\Entity\Attribute\SetFactory as AttributeSetFactory;
use Magento\Framework\Setup\InstallDataInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\ModuleDataSetupInterface;

class InstallData implements InstallDataInterface
{
    private $eavSetupFactory;

    /**
     * @var CustomerSetupFactory
     */
    protected $customerSetupFactory;

    /**
     * @var AttributeSetFactory
     */
    private $attributeSetFactory;



    public function __construct(
        EavSetupFactory $eavSetupFactory,
        CustomerSetupFactory $customerSetupFactory,
        AttributeSetFactory $attributeSetFactory
    )
    {
        $this->eavSetupFactory = $eavSetupFactory;
        $this->customerSetupFactory = $customerSetupFactory;
        $this->attributeSetFactory = $attributeSetFactory;

    }

    public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
    {
        $eavSetup = $this->eavSetupFactory->create(['setup' => $setup]);
    /*
        **
        * Create  Customer Attribute "customer_chargify_id"
        ** ==== START ====
        */

         /** @var CustomerSetup $customerSetup */
        $customerSetup = $this->customerSetupFactory->create(['setup' => $setup]);

        $customerEntity = $customerSetup->getEavConfig()->getEntityType('customer');
        $attributeSetId = $customerEntity->getDefaultAttributeSetId();

        /** @var $attributeSet AttributeSet */
        $attributeSet = $this->attributeSetFactory->create();
        $attributeGroupId = $attributeSet->getDefaultGroupId($attributeSetId);

        $customerSetup->addAttribute(Customer::ENTITY, 'customer_chargify_id', [
            'type' => 'varchar',
            'label' => 'Customer Chargify Id',
            'input' => 'text',
            'required' => false,
            'visible' => true,
            "unique"  => true,
            'user_defined' => true,
            'position' =>999,
            'system' => 0,
        ]);

        $attribute = $customerSetup->getEavConfig()->getAttribute(Customer::ENTITY, 'customer_chargify_id')
        ->addData([
            'attribute_set_id' => $attributeSetId,
            'attribute_group_id' => $attributeGroupId,
            'used_in_forms' => ['adminhtml_customer'],//you can use other forms also ['adminhtml_customer_address', 'customer_address_edit', 'customer_register_address']
        ]);

        $attribute->save();

        /*        
        *   === END ===       
        */



    }
}

Wgac / Đăng ký / lượt xem / cơ sở / ui_component / 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_con
figuration.xsd">
    <fieldset name="customer">
        <field name="customer_chargify_id">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="dataType" xsi:type="string">text</item>
                    <item name="formElement"
                    xsi:type="string">input</item>
                    <item name="source"
                    xsi:type="string">customer</item>
                </item>
            </argument>
        </field>
    </fieldset>
</form>

nhập mô tả hình ảnh ở đây

Vui lòng gợi ý cho tôi nếu tôi đang thiếu một cái gì đó.


1
Tôi có cùng một vấn đề. Tôi không thể tìm ra cái gì gây ra điều này. Bạn có thể giải quyết nó và hiển thị thuộc tính trên tài khoản khách hàng trong quản trị viên không?
Radu

Câu trả lời:


4

Giá trị của 'used_in_forms' phải là ['adminhtml_customer', 'customer_account_edit'] . Nếu bạn không muốn thuộc tính này hiển thị cho khách hàng, bạn nên đặt hiển thị = false . Bạn có thể cập nhật InstallData của bạn như dưới đây:

$customerSetup->removeAttribute(Customer::ENTITY, 'customer_chargify_id');
$customerSetup->addAttribute(Customer::ENTITY, 'customer_chargify_id', [
            'type' => 'varchar',
            'label' => 'Customer Chargify Id',
            'input' => 'text',
            'required' => false,
            'visible' => false,
            "unique" => true,
            'user_defined' => true,
            'position' => 999,
            'system' => 0,
        ]);

        $attribute = $customerSetup->getEavConfig()->getAttribute(Customer::ENTITY, 'customer_chargify_id')
            ->addData([
                'attribute_set_id' => $attributeSetId,
                'attribute_group_id' => $attributeGroupId,
                'used_in_forms' => ['adminhtml_customer', 'customer_account_edit'],
            ]);

Và hãy chắc chắn rằng bạn đã xóa YourVendor_YourModule trong bảng setup_module nếu bạn muốn chạy lại tập lệnh InstallData

Hy vọng điều này sẽ giúp bạn

Trân trọng


1
Một điều chỉnh: Để một thuộc tính hiển thị cho quản trị viên nhưng không hiển thị trên giao diện, bạn cần customer_eav_attribute.is_visible=1( visibleđúng) nhưng eav_attribute.is_user_defined=0( user_definedsai).
Ryan Hoerr
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.