我正在寻找一种添加/更新(默认情况下)Magento用户(模块用户)表单的好方法。可以通过以下路径在管理面板中访问表单:
系统>所有用户> [chosen_user]>用户的主编辑标签(帐户信息)
现在,我尝试在我指定依赖项的自定义模块中使用di.xml:
<preference for="Magento\User\Block\User\Edit\Tab\Main" type="Vendor_Name\Module_Name\Block\User\Edit\Tab\Main" />
<preference for="Magento\User\Block\Role\Grid\User" type="Vendor_Name\Module_Name\Block\Role\Grid\User" />
`
这是我已经为Main.php类制作的内容
// @codingStandardsIgnoreFile
命名空间Vendor_Name \ Module_Name \ Block \ User \ Edit \ Tab;
使用\ Magento \ User \ Block \ User \ Edit \ Tab \ Main作为UserEditMainTab;
使用\ Magento \ Backend \ Block \ Template \ Context;
使用\ Magento \ Framework \ Registry;
使用\ Magento \ Framework \ Data \ FormFactory;
使用\ Magento \ Backend \ Model \ Auth \ Session;
使用\ Magento \ Framework \ Locale \ ListsInterface;
Main类扩展UserEditMainTab
{
公共功能__construct(
上下文$ context,
注册表$ registry,
FormFactory $ formFactory,
会话$ authSession,
ListsInterface $ localeLists,
数组$ data = []
){
parent :: __ construct($ context,$ registry,$ formFactory,$ authSession,$ localeLists,$ data);
}
受保护的函数_prepareForm()
{
/ ** @var $ model \ Magento \ User \ Model \ User * /
$ model = $ this-> _ coreRegistry-> registry('permissions_user');
/ ** @var \ Magento \ Framework \ Data \ Form $ form * /
$ form = $ this-> _ formFactory-> create();
$ form-> setHtmlIdPrefix('user_');
$ baseFieldset = $ form-> addFieldset('base_fieldset',['legend'=> __('Account Information __ TEST')]);;
如果($ model-> getUserId()){
$ baseFieldset-> addField('user_id','hidden',['name'=>'user_id']);;
}其他{
如果(!$ model-> hasData('is_active')){
$ model-> setIsActive(1);
}
}
$ baseFieldset-> addField(
'user_image',
'图片',
[
'名称'=>'用户图片',
'label'=> __('User Image'),
'id'=>'user_image',
'title'=> __('User Image'),
'required'=>否,
'note'=>'允许图像类型:jpg,jpeg,png'
]
);
$ baseFieldset-> addField(
'用户名',
'文本',
[
'名称'=>'用户名',
'标签'=> __('用户名'),
'id'=>'用户名',
'标题'=> __('用户名'),
'必需'=> true
]
);
$ baseFieldset-> addField(
'名字',
'文本',
[
'名称'=>'名字',
'标签'=> __('名字'),
'id'=>'名字',
'标题'=> __('名字'),
'必需'=> true
]
);
$ baseFieldset-> addField(
'姓',
'文本',
[
'名称'=>'姓氏',
'标签'=> __('姓氏'),
'id'=>'姓氏',
'标题'=> __('姓氏'),
'必需'=> true
]
);
$ baseFieldset-> addField(
'电子邮件',
'文本',
[
'名称'=>'电子邮件',
'标签'=> __('电子邮件'),
'id'=>'customer_email',
'标题'=> __('用户电子邮件'),
'class'=>'required-entry validate-email',
'必需'=> true
]
);
$ isNewObject = $ model-> isObjectNew();
如果($ isNewObject){
$ passwordLabel = __('Password');
}其他{
$ passwordLabel = __('新密码');
}
$ confirmationLabel = __('密码确认');
$ this-> _ addPasswordFields($ baseFieldset,$ passwordLabel,$ confirmationLabel,$ isNewObject);
$ baseFieldset-> addField(
'interface_locale',
'选择',
[
'名称'=>'interface_locale',
'标签'=> __('接口语言环境'),
'title'=> __('Interface Locale'),
'值'=> $ this-> _ LocaleLists-> getTranslatedOptionLocales(),
'class'=>'选择'
]
);
如果($ this-> _ authSession-> getUser()-> getId()!= $ model-> getUserId()){
$ baseFieldset-> addField(
'活跃',
'选择',
[
'名称'=>'is_active',
'标签'=> __('此帐户为'),
'id'=>'is_active',
'标题'=> __('帐户状态'),
'class'=>'input-select',
'options'=> ['1'=> __('Active'),'0'=> __('Inactive')]
]
);
}
$ baseFieldset-> addField('user_roles','hidden',['name'=>'user_roles','id'=>'_user_roles']);
$ currentUserVerificationFieldset = $ form-> addFieldset(
'current_user_verification_fieldset',
['legend'=> __('Current User Identity Verification')]
);
$ currentUserVerificationFieldset-> addField(
自我:: CURRENT_USER_PASSWORD_FIELD,
'密码',
[
'名称'=> self :: CURRENT_USER_PASSWORD_FIELD,
'标签'=> __('您的密码'),
'id'=> self :: CURRENT_USER_PASSWORD_FIELD,
'标题'=> __('您的密码'),
'class'=>'输入文本验证当前密码必填项',
'必需'=> true
]
);
$ data = $ model-> getData();
unset($ data ['password']);
未设置($ data [self :: CURRENT_USER_PASSWORD_FIELD]);
$ form-> setValues($ data);
$ this-> setForm($ form);
返回parent :: _ prepareForm();
}
}
和一些User.php代码
命名空间Vendor_Name \ Module_Name \ Block \ Role \ Grid;
使用\ Magento \ User \ Block \ Role \ Grid \ User作为RoleGridUser;
使用\ Magento \ Backend \ Block \ Widget \ Grid \ Extended作为ExtendedGrid;
类User扩展RoleGridUser
{
受保护的函数_prepareColumns()
{
parent :: _ prepareCollection();
$ this-> addColumn(
'user_image',
[
'header'=> __('User Image'),
'宽度'=> 5,
'align'=>'left',
'sortable'=>是,
'索引'=>'用户图片'
]
);
返回ExtendedGrid :: _ prepareCollection();
}
}
如果您仔细看一下,现在您已经在尝试添加带有用户图像的字段。
不幸的是,我看不到管理员的任何变化。当然,所需的列是先前由InstallSchema脚本添加到“ admin_user ”表中的。
树状格式的目录内容:
模块名称 ├──座 │├──目录 ││└──产品 ││└──RelatedPosts.php │├──角色 ││└──网格 ││└──User.php │└──用户 │└──编辑 │└──标签 │└──Main.php ├──composer.json ├──等 │├──di.xml │└──module.xml ├──设置 └──InstallSchema.php
我做错什么了?