Ekleme / güncelleme (varsayılan olarak) Magento Kullanıcı (modül-kullanıcı) formu zaten hazırlanmış iyi bir yaklaşım arıyorum. Forma şu yoldan yönetici panelinde ulaşılabilir:
Sistem> Tüm kullanıcılar> [seçilen_kullanıcı]> Kullanıcının ana düzenleme sekmesi (Hesap Bilgileri)
Şimdi bağımlılıkları belirlediğim özel modülümde di.xml kullanmaya çalışıyorum: `
<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" />
'
Bu, Main.php sınıfı için daha önce yaptığım içerik
// @codingStandardsIgnoreFile
ad alanı Satıcı_Adı \ Modül_Adı \ Engelle \ Kullanıcı \ Düzenle \ Sekme;
UserEditMainTab olarak \ Magento \ User \ Block \ User \ Edit \ Tab \ Main kullanın;
\ Magento \ Backend \ Block \ Template \ Context;
\ Magento \ Framework \ Registry kullanın;
\ Magento \ Framework \ Data \ FormFactory kullanın;
\ Magento \ Backend \ Model \ Auth \ Session kullanın;
\ Magento \ Framework \ Locale \ ListsInterface kullanın;
sınıf Main, UserEditMainTab öğesini genişletir
{
kamu işlevi __construct (
Bağlam $ bağlam,
Registry $ kayıt defteri,
FormFactory $ formFactory,
Oturum $ authSession,
ListelerInterface $ localeLists,
dizi $ verileri = []
) {
parent :: __ construct ($ içerik, $ kayıt defteri, $ formFactory, $ authSession, $ localeLists, $ data);
}
korumalı işlev _prepareForm ()
{
/ ** @var $ model \ Magento \ Kullanıcı \ Model \ Kullanıcı * /
$ model = $ this -> _ coreRegistry-> kayıt defteri ('permissions_user');
/ ** @var \ Magento \ Framework \ Veri \ Form $ formu * /
$ form = $ this -> _ formFactory-> create ();
$ Form-> setHtmlIdPrefix ( 'Kullanıcı_');
$ baseFieldset = $ form-> addFieldset ('base_fieldset', ['gösterge' => __ ('Hesap Bilgileri __ TEST')]);
if ($ model-> getUserId ()) {
$ baseFieldset-> addField ('kullanıcı_kimliği', 'gizli', ['ad' => 'kullanıcı_kimliği']);
} Başka {
if (! $ model-> hasData ('is_active')) {
$ Modeli-> setIsActive (1);
}
}
$ BaseFieldset-> AddField (
'User_image',
'İmage',
[
'name' => 'user_image',
'label' => __ ('Kullanıcı Resmi'),
'id' => 'kullanıcı_görüntüsü',
'title' => __ ('Kullanıcı Resmi'),
'zorunlu' => yanlış,
'note' => 'Görüntü türüne izin ver: jpg, jpeg, png'
]
);
$ BaseFieldset-> AddField (
'Kullanıcı adı',
'Metin',
[
'name' => 'kullanıcı adı',
'label' => __ ('Kullanıcı Adı'),
'id' => 'kullanıcı adı',
'title' => __ ('Kullanıcı Adı'),
'required' => true
]
);
$ BaseFieldset-> AddField (
'İsim',
'Metin',
[
'name' => 'ad',
'label' => __ ('Ad'),
'id' => 'ad',
'title' => __ ('Ad'),
'required' => true
]
);
$ BaseFieldset-> AddField (
'Soyadı',
'Metin',
[
'name' => 'soyadı',
'label' => __ ('Soyadı'),
'id' => 'soyadı',
'title' => __ ('Soyadı'),
'required' => true
]
);
$ BaseFieldset-> AddField (
'Email',
'Metin',
[
'name' => 'e-posta',
'label' => __ ('E-posta'),
'id' => 'customer_email',
'title' => __ ('Kullanıcı E-postası'),
'class' => 'zorunlu giriş validate-email',
'required' => true
]
);
$ isNewObject = $ model-> isObjectNew ();
if ($ isNewObject) {
$ passwordLabel = __ ('Şifre');
} Başka {
$ passwordLabel = __ ('Yeni Şifre');
}
$ confirmationLabel = __ ('Şifre Onayı');
$ this -> _ addPasswordFields ($ baseFieldset, $ passwordLabel, $ confirmationLabel, $ isNewObject);
$ BaseFieldset-> AddField (
'İnterface_locale',
'Seçeneğini',
[
'name' => 'interface_locale',
'label' => __ ('Arayüz Yerel Ayarı'),
'title' => __ ('Arayüz Yerel Ayarı'),
'değerleri' => $ this -> _ LocaleLists-> getTranslatedOptionLocales (),
'class' => 'select'
]
);
if ($ this -> _ authSession-> getUser () -> getId ()! = $ model-> getUserId ()) {
$ BaseFieldset-> AddField (
'aktif',
'Seçeneğini',
[
'name' => 'is_active',
'label' => __ ('Bu hesap'),
'id' => 'is_active',
'title' => __ ('Hesap Durumu'),
'class' => 'input-select',
'options' => ['1' => __ ('Etkin'), '0' => __ ('Etkin değil')]
]
);
}
$ baseFieldset-> addField ('user_roles', 'hidden', ['name' => 'user_roles', 'id' => '_user_roles']);
$ currentUserVerificationFieldset = $ form-> addFieldset (
'Current_user_verification_fieldset',
['legend' => __ ('Mevcut Kullanıcı Kimliği Doğrulaması')]
);
$ CurrentUserVerificationFieldset-> AddField (
öz :: CURRENT_USER_PASSWORD_FIELD,
'parola',
[
'name' => self :: CURRENT_USER_PASSWORD_FIELD,
'label' => __ ('Parolanız'),
'id' => self :: CURRENT_USER_PASSWORD_FIELD,
'title' => __ ('Parolanız'),
'class' => 'giriş-metin validate-current-password required-entry',
'required' => true
]
);
$ data = $ model-> getData ();
sertleşmemiş ($ verileri [ 'şifre']);
unset ($ veri [öz :: CURRENT_USER_PASSWORD_FIELD]);
$ Form-> setValues ($ data);
$ This-> setForm ($ formu);
dönüş üst öğesi :: _ preparForm ();
}
}
ve User.php için bazı kodlar
ad alanı Satıcı_Adı \ Modül_Adı \ Engelle \ Rol \ Izgara;
\ Magento \ Kullanıcı \ Engelle \ Rol \ Izgara \ Kullanıcı'yı RoleGridUser olarak kullanın;
\ Magento \ Backend \ Block \ Widget \ Grid \ ExtendedGrid olarak Genişletilmiş;
sınıfı Kullanıcı RoleGridUser'ı genişletir
{
korumalı işlev _prepareColumns ()
{
üst :: _ prepareCollection ();
$ This-> addColumn (
'User_image',
[
'header' => __ ('Kullanıcı Resmi'),
'genişlik' => 5,
'align' => 'left',
'sıralanabilir' => doğru,
'index' => 'user_image'
]
);
dönüş ExtendedGrid :: _ preparCollection ();
}
}
Daha yakından bakarsanız, şimdi kullanıcının resmiyle bir alan eklemeye çalışıyorum.
Ne yazık ki, yönetici cephesinde herhangi bir değişiklik görmüyorum. Elbette, gerekli sütun InstallSchema betiği tarafından daha önce ' admin_user ' tablosuna eklenmiştir .
Ağaç biçimindeki dizinlerin içeriği:
Modül Adı ├── Engelle ├── ├── Katalog └── │ └── Ürün P │ └── RelatedPosts.php ├── ├── Rolü │ │ └── Izgara . │ └── User.php └── └── Kullanıcı └── └── Düzenle └── └── Sekmesi . └── Main.php ├── composer.json ├── vb. │ ├── di.xml │ └── module.xml ├── Kurulum └── InstallSchema.php
Neyi yanlış yaptım?