1、新建一个模块 例如Member
2、在模块的内容新增Setup文件
3、新增InstallData.php
例如:
<?php
use Magento\Customer\Model\Customer;
use Magento\Framework\Setup\InstallDataInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\ModuleDataSetupInterface;
use Magento\Framework\DB\Ddl\Table;
class InstallData implements InstallDataInterface
{
protected $customerFactory;
public function __construct(
\Magento\Customer\Setup\CustomerSetupFactory $customerSetupFactory
)
{
$this->customerFactory=$customerSetupFactory;
}
public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
{
$setup->startSetup();
$custmerSetup=$this->customerFactory->create(['setup'=>$setup]);
$custmerSetup->addAttribute(
Customer::ENTITY,
'membership_expire_time',
[
'type'=>Table::TYPE_DATETIME,
'label'=>"Membership expire time",
'require'=>false,
'backend_type'=>'datetime',
'input'=>Table::TYPE_DATE,
'is_used_in_grid' => true,
'is_visible_in_grid' => true,
'is_filterable_in_grid' => true,
'is_searchable_in_grid' => true,
'user_defined'=>true,
'visible' => false,
'is_visible' => false,
'system'=>false,
'group'=>"Account Information",
'position' =>0,
'sort_order' => 0,
]
);
$membershiptimeAttribute = $custmerSetup->getEavConfig()->getAttribute(Customer::ENTITY,'membership_expire_time');
$membershiptimeAttribute->setData('used_in_forms',['adminhtml_customer','customer_account_edit','adminhtml_checkout']);
$membershiptimeAttribute->save();
}
}
customer的表实现了EAV模型
字段解析和注意事项
1、type的话代表了字段的类型,如果是static代表的是customer_entity里面的字段的属性,这时你要在customer_entity新增字段,如果是varchar的类型的话,属性值会在customer_entity_varchar里面添加
2、label是标签
3、require 代表是不是必须,如果是必须的话,必填,否则保存不了
4、input代表的是字段的表格字段类型,backend_type后台的表格类型
5、is_used_in_grid,is_visible_in_grid,is_filterable_in_grid,is_searchable_in_grid这些都是代表是否用在后台的管理表格,true为应用,false代表不应用
6、system如果为true,则只能再数据库修改, 为false可以修改
7、‘adminhtml_customer’,‘customer_account_edit’,‘adminhtml_checkout’ 这些 都是为这些表格添加属性,设置的话会在customer_form_attribute添加记录