Saya mencari pendekatan yang baik dengan add / update yang sudah disiapkan (secara default) formulir Magento Pengguna (modul-pengguna). Formulir dapat dihubungi di panel admin dengan jalur ini:
Sistem> Semua pengguna> [terpilih_ pengguna]> Tab edit utama pengguna (Informasi Akun)
Sekarang saya mencoba menggunakan di.xml dalam modul khusus saya tempat saya menentukan dependensi: `
<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" />
`
Ini adalah konten yang telah saya buat untuk kelas Main.php
// @codingStandardsIgnoreFile namespace Vendor_Name \ Module_Name \ Block \ User \ Edit \ Tab; gunakan \ Magento \ Pengguna \ Blok \ Pengguna \ Edit \ Tab \ Main sebagai UserEditMainTab; gunakan \ Magento \ Backend \ Block \ Template \ Context; gunakan \ Magento \ Framework \ Registry; gunakan \ Magento \ Framework \ Data \ FormFactory; gunakan \ Magento \ Backend \ Model \ Auth \ Session; gunakan \ Magento \ Framework \ Locale \ ListsInterface; kelas Utama meluas UserEditMainTab { fungsi publik __construct ( Konteks $ konteks, Registri $ pendaftaran, FormFactory $ formFactory, Sesi $ authSession, DaftarInterface $ lokalDaftar, array $ data = [] ) { parent :: __ construct ($ context, $ registry, $ formFactory, $ authSession, $ localeLists, $ data); } fungsi yang dilindungi _prepareForm () { / ** @var $ model \ Magento \ Pengguna \ Model \ Pengguna * / $ 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' => __ ('Informasi Akun __ TEST')]); if ($ model-> getUserId ()) { $ baseFieldset-> addField ('user_id', 'hidden', ['name' => 'user_id']); } lain { if (! $ model-> hasData ('is_active')) { $ model-> setIsActive (1); } } $ baseFieldset-> addField ( 'user_image', 'gambar', [ 'name' => 'user_image', 'label' => __ ('Gambar Pengguna'), 'id' => 'user_image', 'title' => __ ('Gambar Pengguna'), 'wajib' => salah, 'note' => 'Izinkan jenis gambar: jpg, jpeg, png' ] ); $ baseFieldset-> addField ( 'nama pengguna', 'teks', [ 'name' => 'username', 'label' => __ ('Nama Pengguna'), 'id' => 'nama pengguna', 'title' => __ ('Nama Pengguna'), 'wajib' => benar ] ); $ baseFieldset-> addField ( 'nama depan', 'teks', [ 'name' => 'firstname', 'label' => __ ('Nama Depan'), 'id' => 'firstname', 'title' => __ ('Nama Depan'), 'wajib' => benar ] ); $ baseFieldset-> addField ( 'nama keluarga', 'teks', [ 'name' => 'lastname', 'label' => __ ('Nama Belakang'), 'id' => 'nama belakang', 'title' => __ ('Nama Belakang'), 'wajib' => benar ] ); $ baseFieldset-> addField ( 'surel', 'teks', [ 'name' => 'email', 'label' => __ ('Email'), 'id' => 'customer_email', 'title' => __ ('Email Pengguna'), 'class' => 'wajib-entri validasi-email', 'wajib' => benar ] ); $ isNewObject = $ model-> isObjectNew (); if ($ isNewObject) { $ passwordLabel = __ ('Kata Sandi'); } lain { $ passwordLabel = __ ('Kata Sandi Baru'); } $ confirmLabel = __ ('Konfirmasi Kata Sandi'); $ this -> _ addPasswordFields ($ baseFieldset, $ passwordLabel, $ confirmLabel, $ isNewObject); $ baseFieldset-> addField ( 'interface_locale', 'Pilih', [ 'name' => 'interface_locale', 'label' => __ ('Antarmuka Antarmuka'), 'title' => __ ('Interface Interface'), 'values' => $ this -> _ LocaleLists-> getTranslatedOptionLocales (), 'class' => 'select' ] ); if ($ this -> _ authSession-> getUser () -> getId ()! = $ model-> getUserId ()) { $ baseFieldset-> addField ( 'aktif', 'Pilih', [ 'name' => 'is_active', 'label' => __ ('Akun ini adalah'), 'id' => 'is_active', 'title' => __ ('Status Akun'), 'class' => 'input-select', 'options' => ['1' => __ ('Aktif'), '0' => __ ('Tidak Aktif')] ] ); } $ baseFieldset-> addField ('user_roles', 'hidden', ['name' => 'user_roles', 'id' => '_user_roles']); $ currentUserVerificationFieldset = $ form-> addFieldset ( 'current_user_verification_fieldset', ['legend' => __ ('Verifikasi Identitas Pengguna Saat Ini')] ); $ currentUserVerificationFieldset-> addField ( self :: CURRENT_USER_PASSWORD_FIELD, 'kata sandi', [ 'name' => self :: CURRENT_USER_PASSWORD_FIELD, 'label' => __ ('Kata Sandi Anda'), 'id' => self :: CURRENT_USER_PASSWORD_FIELD, 'title' => __ ('Kata Sandi Anda'), 'class' => 'input-teks validate-current-password required-entry', 'wajib' => benar ] ); $ data = $ model-> getData (); tidak disetel ($ data ['kata sandi']); tidak disetel ($ data [mandiri :: CURRENT_USER_PASSWORD_FIELD]); $ form-> setValues ($ data); $ this-> setForm ($ form); return parent :: _ prepForm (); } }
dan beberapa kode untuk User.php
namespace Vendor_Name \ Module_Name \ Block \ Role \ Grid; gunakan \ Magento \ User \ Block \ Role \ Grid \ User sebagai RoleGridUser; gunakan \ Magento \ Backend \ Block \ Widget \ Grid \ Extended sebagai ExtendedGrid; kelas Pengguna memperluas RoleGridUser { fungsi terproteksi _prepareColumns () { parent :: _ prepacollection (); $ this-> addColumn ( 'user_image', [ 'header' => __ ('Gambar Pengguna'), 'width' => 5, 'sejajarkan' => 'kiri', 'sortable' => true, 'index' => 'user_image' ] ); return ExtendedGrid :: _ persiapanCollection (); } }
Jika Anda melihat lebih dekat, Anda sekarang sudah mencoba menambahkan bidang dengan gambar pengguna.
Sayangnya, saya tidak melihat perubahan apa pun di depan admin. Tentu saja, kolom yang diperlukan ditambahkan oleh skrip InstallSchema sebelumnya ke tabel ' admin_user '.
Isi direktori dalam format seperti pohon:
Module_Name ├── Blokir │ ├── Katalog │ │ └── Produk │ │ └── RelatedPosts.php │ ├── Peran │ │ └── Kotak │ │ └── User.php │ └── Pengguna │ └── Edit │ └── Tab │ └── Main.php ├── composer.json ├── dll │ ├── di.xml │ └── module.xml ├── Pengaturan └── InstallSchema.php
Apa kesalahan yang telah aku perbuat?