ฉันกำลังมองหาวิธีการที่ดีด้วยการเพิ่ม / อัปเดตที่เตรียมไว้แล้ว (โดยค่าเริ่มต้น) แบบฟอร์มของผู้ใช้ 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
ฉันทำอะไรผิด?