我正在寻找一种添加/更新(默认情况下)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
我做错什么了?