ฉันกำลังมองหาวิธีการที่ดีด้วยการเพิ่ม / อัปเดตที่เตรียมไว้แล้ว (โดยค่าเริ่มต้น) แบบฟอร์มของผู้ใช้ Magento (โมดูลผู้ใช้) แบบฟอร์มสามารถเข้าถึงได้ในแผงควบคุมโดยเส้นทางนี้:
ระบบ> ผู้ใช้ทั้งหมด> [selected_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
{
ฟังก์ชั่นสาธารณะ __ โครงสร้าง (
บริบท $ บริบท
การลงทะเบียน $ Registry
FormFactory $ formFactory
เซสชัน $ authSession
ListsInterface $ locale รายการ,
อาร์เรย์ $ data = []
) {
parent :: __ สร้าง ($ context, $ registry, $ formFactory, $ authSession, $ localeLists, $ data);
}
ฟังก์ชันที่มีการป้องกัน _prepareForm ()
{
/ ** @var $ model \ Magento \ User \ Model \ User * /
$ model = $ this -> _ coreRegistry-> การลงทะเบียน ('Permissions_user');
/ ** @var \ Magento \ Framework \ Data \ Form $ form * /
$ form = $ this -> _ formFactory-> create ();
$ form-> setHtmlIdPrefix ( 'USER_');
$ baseFieldset = $ form-> addFieldset ('base_fieldset', ['legend' => __ ('ข้อมูลบัญชี __ ทดสอบ')]);
if ($ model-> getUserId ()) {
$ baseFieldset-> addField ('user_id', 'ซ่อน', ['name' => 'user_id']);
} อื่น {
if (! $ model-> hasData ('is_active')) {
$ model-> setIsActive (1);
}
}
$ baseFieldset-> addField (
'user_image'
'ภาพ',
[
'name' => 'user_image'
'label' => __ ('ภาพผู้ใช้'),
'id' => 'user_image'
'title' => __ ('ภาพผู้ใช้'),
'ต้องใช้' => false
'note' => 'อนุญาตประเภทภาพ: jpg, jpeg, png'
]
);
$ baseFieldset-> addField (
'ชื่อผู้ใช้'
'ข้อความ'
[
'name' => 'ชื่อผู้ใช้',
'label' => __ ('ชื่อผู้ใช้'),
'id' => 'ชื่อผู้ใช้',
'title' => __ ('ชื่อผู้ใช้'),
'ต้องใช้' => จริง
]
);
$ baseFieldset-> addField (
'ชื่อจริง',
'ข้อความ'
[
'name' => 'ชื่อแรก'
'label' => __ ('ชื่อจริง')
'id' => 'ชื่อแรก'
'title' => __ ('ชื่อจริง')
'ต้องใช้' => จริง
]
);
$ baseFieldset-> addField (
'นามสกุล',
'ข้อความ'
[
'name' => 'นามสกุล'
'label' => __ ('นามสกุล'),
'id' => 'นามสกุล'
'title' => __ ('นามสกุล'),
'ต้องใช้' => จริง
]
);
$ baseFieldset-> addField (
'อีเมล'
'ข้อความ'
[
'name' => 'อีเมล'
'label' => __ ('อีเมล')
'id' => 'customer_email'
'title' => __ ('อีเมลผู้ใช้'),
'class' => 'required-entry validate-email',
'ต้องใช้' => จริง
]
);
$ isNewObject = $ model-> isObjectNew ();
ถ้า ($ isNewObject) {
$ passwordLabel = __ ('รหัสผ่าน');
} อื่น {
$ passwordLabel = __ ('รหัสผ่านใหม่');
}
$ confirmLabel = __ ('ยืนยันรหัสผ่าน');
$ this -> _ addPasswordFields ($ baseFieldset, $ passwordLabel, $ confirmLabel, $ isNewObject);
$ baseFieldset-> addField (
'interface_locale'
'เลือก',
[
'name' => 'interface_locale',
'label' => __ ('สถานที่ตั้งของส่วนต่อประสาน'),
'title' => __ ('สถานที่ตั้งของส่วนต่อประสาน'),
'values' => $ this -> _ LocaleLists-> getTranslatedOptionLocales ()
'class' => 'เลือก'
]
);
if ($ this -> _ authSession-> getUser () -> getId ()! = $ model-> getUserId ()) {
$ baseFieldset-> addField (
'is_active'
'เลือก',
[
'name' => 'is_active',
'label' => __ ('บัญชีนี้คือ'),
'id' => 'is_active',
'title' => __ ('สถานะบัญชี'),
'class' => 'input-select',
'options' => ['1' => __ ('ใช้งานอยู่'), '0' => __ ('ไม่ใช้งาน')]
]
);
}
$ baseFieldset-> addField ('user_roles', 'ซ่อน', ['name' => 'user_roles', 'id' => '_user_roles']);
$ currentUserVerificationFieldset = $ form-> addFieldset (
'current_user_verification_fieldset'
['legend' => __ ('การยืนยันตัวตนผู้ใช้ปัจจุบัน')]
);
$ currentUserVerificationFieldset-> addField (
ตนเอง :: CURRENT_USER_PASSWORD_FIELD,
'รหัสผ่าน'
[
'name' => ตนเอง :: CURRENT_USER_PASSWORD_FIELD
'label' => __ ('รหัสผ่านของคุณ')
'id' => ตนเอง :: CURRENT_USER_PASSWORD_FIELD
'title' => __ ('รหัสผ่านของคุณ')
'class' => 'ต้องป้อนข้อมูลตรวจสอบความถูกต้องของรหัสผ่านปัจจุบัน,'
'ต้องใช้' => จริง
]
);
$ data = $ model-> getData ();
ไม่มีการตั้งค่า ($ data [ 'รหัสผ่าน']);
ไม่มีการตั้งค่า ($ ข้อมูล [ตนเอง :: CURRENT_USER_PASSWORD_FIELD]);
$ form-> setValues ($ data);
$ this-> setForm ($ รูปแบบ);
ผู้ปกครองกลับ :: _ PreparForm ();
}
}
และบางรหัสสำหรับ User.php
เนมสเปซ Vendor_Name \ Module_Name \ Block \ Role \ Grid;
ใช้ \ Magento \ User \ Block \ Role \ Grid \ User เป็น RoleGridUser;
ใช้ \ Magento \ Backend \ Block \ Widget \ Grid \ Extended เป็น ExtendedGrid;
ผู้ใช้คลาสขยาย RoleGridUser
{
ฟังก์ชันที่มีการป้องกัน _prepareColumns ()
{
ผู้ปกครอง :: _ prepareCollection ();
$ this-> addColumn (
'user_image'
[
'header' => __ ('ภาพผู้ใช้'),
'width' => 5,
'align' => 'left',
'sortable' => จริง
'index' => 'user_image'
]
);
ส่งคืน ExtendedGrid :: _ PreparCollection ();
}
}
หากคุณมองเข้าไปใกล้คุณแล้วตอนนี้ฉันกำลังพยายามเพิ่มเขตข้อมูลด้วยภาพของผู้ใช้
น่าเสียดายที่ฉันไม่เห็นการเปลี่ยนแปลงใด ๆ ในหน้าผู้ดูแลระบบ แน่นอนว่าคอลัมน์ที่ต้องการถูกเพิ่มโดยสคริปต์ InstallSchema ก่อนหน้านี้ในตาราง ' admin_user '
เนื้อหาของไดเรกทอรีในรูปแบบที่เหมือนต้นไม้:
module_name ├──บล็อก แคตตาล็อก│├── ││└──ผลิตภัณฑ์ Post │└──บทความที่เกี่ยวข้อง │├──บทบาท └──│└──กริด . │└── User.php └──└──ผู้ใช้ │└──แก้ไข แท็บ│└── └──└── Main.php ├── composer.json ├──เป็นต้น │├── di.xml │└── module.xml ├──ตั้งค่า └── InstallSchema.php
ฉันทำอะไรผิด?