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?