Scenario

我正在尝试为Magento Customer实现一个自定义属性,该属性应该接受 boolean 值(True / False,Yes / No ...) .

我正在使用Magento CE 2.2.4 .

这是 /app/code/TheVendor_TheModule/ 下的自定义模块的一部分 .

模块的其他组件正常工作 .

Expected Result

该属性必须在后端客户表单中使用 switch 输入或复选框表示 .

属性及其值必须出现在Customers Grid中

该属性必须出现在带有可选选项的 Filter 中(是/否或真/假或是/否,任何类似布尔值的工作正常)

Actual Result

[确定]开关按预期显示在客户表单的后端 .

[确定]将开关值更改为开启或关闭保存工作正常 .

[ Issue ]属性 Label 显示在 Customer Grid 但 the values are missing 中 .

[ Issue ] Filter 中的属性输入显示但是 does not contain options .

Screens

后端的客户表单视图

客户网格和过滤视图

Code

namespace TheVendor\TheModule\Setup;

use Magento\Customer\Setup\CustomerSetupFactory;

use Magento\Eav\Setup\EavSetup;

use Magento\Eav\Model\Config;

use Magento\Eav\Setup\EavSetupFactory;

use Magento\Framework\Setup\InstallDataInterface;

use Magento\Framework\Setup\ModuleContextInterface;

use Magento\Framework\Setup\ModuleDataSetupInterface;

class InstallData implements InstallDataInterface {

const ATTRIBUTE_APPROVED = 'attribute_approved';

protected $customerSetupFactory;

private $eavSetupFactory;

private $eavConfig;

private $attributeResource;

public function __construct(

CustomerSetupFactory $customerSetupFactory,

EavSetupFactory $eavSetupFactory,

Config $eavConfig,

\Magento\Customer\Model\ResourceModel\Attribute $attributeResource

){

$this->eavSetupFactory = $eavSetupFactory;

$this->eavConfig = $eavConfig;

$this->customerSetupFactory = $customerSetupFactory;

$this->attributeResource = $attributeResource;

}

public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)

{

$setup->startSetup();

/** @var CustomerSetup $customerSetup */

$customerSetup = $this->customerSetupFactory->create(['setup' => $setup]);

$customerSetup->addAttribute(\Magento\Customer\Model\Customer::ENTITY, self::ATTRIBUTE_APPROVED, [

'type' => 'int',

'label' => 'Attribute Approved',

'input' => 'boolean',

'required' => false,

'visible' => true,

'system' => false,

'position' => 9,

'sort_order' => 9,

'is_used_in_grid' => true,

'is_visible_in_grid' => true,

'is_filterable_in_grid' => true,

'is_searchable_in_grid' => true,

//'user_defined' => true, //commented because causing attribute fail on module install

//'searchable' => true,

'filterable' => true,

'comparable' => true,

'default' => '0',

//'unique' => 0,

]);

$myAttribute = $customerSetup->getEavConfig()->getAttribute(\Magento\Customer\Model\Customer::ENTITY, self::ATTRIBUTE_APPROVED);

$myAttribute->setData('used_in_forms', ['adminhtml_customer']);

$this->attributeResource->save($myAttribute);

$setup->endSetup();

}

}

Attempts and Tests

我尝试了以下方法:

Magento Dev Docs中的查找解决方案

StackExchange上的查找解决方案

其他论坛上的查找解决方案

调整 $customerSetup->addAttribute(...) 选项:

设置 'user_defined' => true . 使用时,这个导致属性设置失败而没有错误 .

设置 'default' => 0 和 'default' => '0'

设置 'searchable' => true

检查日志是否有错误,没有找到 .

删除Module文件夹并在重新安装之前再次创建它

已执行 php bin/magento setup:di:compile

已执行 php bin/magento setup:static-content:deploy -f

Testing Routine

对于我所做的每个测试,我都遵循这些步骤以确保正确安装模块:

执行 php bin/magento module:disable TheVendor_TheModule

从数据库中删除记录:

删除 mage_setup_module 中的模块记录

删除 mage_eav_attribute 中的EAV记录

确保在 app/etc/config.php 中禁用了模块

拉出更新的代码

执行 php bin/magento module:enable TheVendor_TheModule

执行 php bin/magento setup:upgrade

执行 php bin/magento indexer:reindex

执行 php bin/magento cache:clean

Question

有关如何处理此问题或如何检测问题来源的建议的任何人?

java eav_使用EAV的客户自定义属性不在Grid中显示值相关推荐

  1. java类与对象 演练 客户姓名添加与查看

    java类与对象 演练 客户姓名添加与查看 视频 https://www.ixigua.com/6870483106223096327?logTag=_YUmIb2rn9-6JpoNipj9r 类的定 ...

  2. java实现代理服务器,接收客户端连接,发送到对应服务器

    全栈工程师开发手册 (作者:栾鹏) java教程全解 java实现代理服务器,接收客户端连接,发送到对应服务器 package com.lp.app.webserver;import java.net ...

  3. Java学习路线:day11 客户信息管理软件

    文章目录 转载自atguigu.com视频 客户信息管理软件 需求说明书 软件设计结构 第1步:封装CMUtility工具类 第2步:Customer类的设计 第3步:CustomerList类的设计 ...

  4. java计算机毕业设计Web企业客户管理系统MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计Web企业客户管理系统MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计Web企业客户管理系统MyBatis+系统+LW文档+源码+调试部署 本源码技术栈: ...

  5. linux java db2,[转载]DB2 UDB for Linux, UNIX 和 Windows 中的 Java 开发概述: V8.1 更新版

    DB2 UDB for Linux, UNIX 和 Windows 中的 Java 开发概述:V8.1 更新版 DB2 UDB V8 中为了支持 Java 已经做了很多更改.本文总结了所有这些更改,同 ...

  6. Java 反射将配置文件数据加载到对象属性中

    Java 反射将配置文件数据加载到对象属性中 Java 反射 可以根据类名找到相应的类,也可以将配置文件中的值加载到对应属性中. 需要用到的包:spring-core-3.1.2.Release.ja ...

  7. java检测ubuntu_在Ubuntu、Debian、CentOS Linux中检查Java版本的方法

    本文介绍在Linux操作系统中使用命令行来检查所安装的Java版本(Java Version),当安装需要特定版本的Java的应用程序时,这很有用.该方法适用于Ubuntu.Debian.CentOS ...

  8. 【Java文件操作(五)】从txt文件中读取字符串、乱码原因

    我的博客--Java文件操作系列 [Java文件操作(一)]递归打印文件目录 [Java文件操作(二)]删除文件夹,但保留其内部文件 [Java文件操作(三)]递归复制文件夹内所有文件 [Java文件 ...

  9. java集合根据值排序_Java 8:对集合中的值进行排序

    java集合根据值排序 意识到Java 8将在接下来的几周内发布其GA版本之后,我认为现在是时候来看看它了,在过去的一周里,我一直在阅读Venkat Subramaniam的书 . 我要讲的是第3章, ...

最新文章

  1. 在Dockerfile中设置G1垃圾回收器参数
  2. Ubuntu16.04 Table无法自动补全
  3. DNS报文格式(RFC1035)
  4. 博览安全圈:360曝Office高危漏洞 微软及时修复
  5. mysql relay log时间_如何得到Slave应用relay-log的时间
  6. cad图框尺寸标准图_工程必备 | CAD图纸1:100打印可以量取的尺寸
  7. 测试工作中常用的方法
  8. js dom node.children与node.childNodes区别
  9. LeetCode 20. 有效的括号 golang(三)
  10. android 语音搜索动画,Android自定义控件实现UC浏览器语音搜索效果
  11. 【Flink】Flink ES6写入报错 IncompatibleClassChangeError: Implementing class
  12. 【MVC+MySQL+EntityFramework】查询性能优化笔记
  13. 阿里双十一 5 大招式!
  14. Mac 安装mysql5.7.29
  15. Activiti7整合SpringBoot
  16. Oracle 创建和操作表
  17. 路由器与交换机的作用及区别
  18. 计算机金融专业美国学校排名,美国金融专业都有哪些种类?
  19. Java SSLSocket的使用
  20. XP系统IE浏览器无法访问https

热门文章

  1. 引流拓客方法论之SEO引流
  2. 智慧文博,文物实时定位--新导智能
  3. 简道云--注册和登陆
  4. 如何重置您的Apple AirPods
  5. 腾讯 tiny os shell移植
  6. Android之指南针(电子罗盘)学习
  7. 林轩田机器学习基石课程学习笔记1.The Learning Problem
  8. 【微信小程序】之画布
  9. 《最简单的图形与最复杂的信息》读书浅悟
  10. 关键词提取算法之RAKE