मैं पहले से तैयार (डिफ़ॉल्ट रूप से) मैगेंटो उपयोगकर्ता (मॉड्यूल-उपयोगकर्ता) फॉर्म के साथ एक अच्छा दृष्टिकोण की तलाश कर रहा हूं। इस मार्ग से फ़ॉर्म को व्यवस्थापक पैनल में पहुँचा जा सकता है:
सिस्टम> सभी उपयोगकर्ता> [चुना हुआ_सर]> उपयोगकर्ता का मुख्य संपादन टैब (खाता जानकारी)
अब मैं अपने कस्टम मॉड्यूल में 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;
UserEditMainTab के रूप में \ Magento \ User \ Block \ User \ Edit \ Tab \ Main का उपयोग करें;
\ Magento \ Backend \ Block \ Template \ Context का उपयोग करें;
\ Magento \ Framework \ रजिस्ट्री का उपयोग करें;
\ Magento \ Framework \ Data \ FormFactory का उपयोग करें;
\ Magento \ Backend \ Model \ Auth \ सत्र का उपयोग करें;
\ Magento \ Framework \ Locale \ ListsInterface का उपयोग करें;
वर्ग मुख्य का विस्तार UserEditMainTab से होता है
{
सार्वजनिक समारोह __construct (
प्रसंग $ संदर्भ,
रजिस्ट्री $ रजिस्ट्री,
फॉर्मफैक्टरी $ फॉर्मफैक्टरी,
सेशन $ ऑस्ट्रेशन,
ListsInterface $ लोकेलिस्ट,
सरणी $ डेटा = []
) {
जनक :: __ निर्माण ($ संदर्भ, $ रजिस्ट्री, $ फॉर्मफैक्टिंग, $ ऑक्टोसेशन, $ लोकेललिस्ट, $ डेटा);
}
संरक्षित फ़ंक्शन _prepareForm ()
{
/ ** @वर $ मॉडल \ Magento \ User \ Model \ User * /
$ मॉडल = $ यह -> _ कोरग्रैजिस्ट्री-> रजिस्ट्री ('अनुमतियाँ_सर');
/ ** @वर \ _ Magento \ Framework \ Data \ Form $ फॉर्म * /
$ फॉर्म = $ यह -> _ फॉर्मफैक्टरी -> बनाएं ();
$ फार्म> setHtmlIdPrefix ( '_उपयोगकर्ता');
$ baseFieldset = $ form-> addFieldset ('base_fieldset', ['किंवदंती' => __ ('खाता जानकारी __ TEST')]);
अगर ($ मॉडल-> getUserId ()) {
$ baseFieldset-> addField ('user_id', 'hidden', ['name' => 'user_id']);
} अन्य {
अगर ($ मॉडल-> hasData ('is_active')) {
$ मॉडल> setIsActive (1);
}
}
$ BaseFieldset-> addField (
'User_image',
'छवि',
[
'name' => 'user_image',
'लेबल' => __ ('उपयोगकर्ता छवि'),
'आईडी' => 'user_image',
'शीर्षक' => __ ('उपयोगकर्ता छवि'),
'आवश्यक' => असत्य,
'नोट' => 'छवि प्रकार की अनुमति दें: जेपीजी, जेपीईजी, पीएनजी'
]
);
$ BaseFieldset-> addField (
'उपयोगकर्ता नाम',
'पाठ',
[
'नाम' => 'उपयोगकर्ता नाम',
'लेबल' => __ ('उपयोगकर्ता नाम'),
'आईडी' => 'उपयोगकर्ता नाम',
'शीर्षक' => __ ('उपयोगकर्ता नाम'),
'आवश्यक' => सत्य
]
);
$ BaseFieldset-> addField (
'पहला नाम',
'पाठ',
[
'name' => 'firstname',
'लेबल' => __ ('पहला नाम'),
'आईडी' => 'पहला नाम',
'शीर्षक' => __ ('पहला नाम'),
'आवश्यक' => सत्य
]
);
$ BaseFieldset-> addField (
'उपनाम',
'पाठ',
[
'नाम' => 'अंतिम नाम',
'लेबल' => __ ('अंतिम नाम'),
'आईडी' => 'अंतिम नाम',
'शीर्षक' => __ ('अंतिम नाम'),
'आवश्यक' => सत्य
]
);
$ BaseFieldset-> addField (
'ईमेल',
'पाठ',
[
'नाम' => 'ईमेल',
'लेबल' => __ ('ईमेल'),
'id' => 'customer_email',
'शीर्षक' => __ ('उपयोगकर्ता ईमेल'),
'वर्ग' => 'आवश्यक-प्रविष्टि मान्य-ईमेल',
'आवश्यक' => सत्य
]
);
$ .NewObject = $ मॉडल-> isObjectNew ();
अगर ($ .न्यूबजेक्ट) {
$ पासवर्डलाब = __ ('पासवर्ड');
} अन्य {
$ पासवर्डलाब = __ ('नया पासवर्ड');
}
$ पुष्टिकरण लेबल = __ ('पासवर्ड पुष्टिकरण');
यह
$ BaseFieldset-> addField (
'Interface_locale',
'चुनते हैं',
[
'name' => 'interface_locale',
'लेबल' => __ ('इंटरफ़ेस लोकेल'),
'शीर्षक' => __ ('इंटरफ़ेस लोकेल'),
'मान' => $ यह -> लोकेलेस्ट-> getTranslatedOptionLocales (),
'वर्ग' => 'चयन'
]
);
अगर ($ यह -> _ व्यवसाय -> getUser () -> getId ()! = $ मॉडल-> getUserId ()) {
$ BaseFieldset-> addField (
'सक्रिय है',
'चुनते हैं',
[
'name' => 'is_active',
'लेबल' => __ ('यह खाता है'),
'आईडी' => 'is_active' है,
'शीर्षक' => __ ('खाता स्थिति'),
'वर्ग' => 'इनपुट-चयन',
'विकल्प' => ['1' => __ ('सक्रिय'), '0' => __ ('इनवेशन']]
]
);
}
$ baseFieldset-> addField ('user_roles', 'hidden', ['name' => 'user_roles', 'id' => '_user_roles']);
$ currentUserVerificationFieldset = $ फ़ॉर्म-> addFieldset (
'Current_user_verification_fieldset',
['किंवदंती' => __ ('वर्तमान उपयोगकर्ता पहचान सत्यापन')]
);
$ CurrentUserVerificationFieldset-> addField (
स्वयं :: CURRENT_USER_PASSWORD_FIELD,
'कुंजिका',
[
'नाम' => स्व :: CURRENT_USER_PASSWORD_FIELD,
'लेबल' => __ ('आपका पासवर्ड'),
'आईडी' => स्वयं :: CURRENT_USER_PASSWORD_FIELD,
'शीर्षक' => __ ('योर पासवर्ड'),
'वर्ग' => 'इनपुट-पाठ मान्य-वर्तमान-पासवर्ड आवश्यक-प्रविष्टि',
'आवश्यक' => सत्य
]
);
$ डेटा = $ मॉडल-> गेटडाटा ();
सेट नहीं ($ डेटा [ 'पासवर्ड']);
सेट नहीं ($ डेटा [आत्म :: CURRENT_USER_PASSWORD_FIELD]);
$ फार्म> setValues ($ डेटा);
$ This-> setForm ($ फार्म);
वापसी माता-पिता :: _ तैयारी ();
}
}
और User.php के लिए कुछ कोड
नामस्थान Vendor_Name \ Module_Name \ Block \ Role \ ग्रिड;
भूमिकाकर्ता के रूप में \ Magento \ User \ Block \ Role \ Grid \ User का उपयोग करें;
ExtendedGrid के रूप में \ Magento \ Backend \ Block \ Widget \ Grid \ का उपयोग करें;
वर्ग उपयोगकर्ता रोलग्रिड्यूसर का विस्तार करता है
{
संरक्षित कार्य _prepareColumns ()
{
माता-पिता :: _ prepareCollection ();
$ This-> addColumn (
'User_image',
[
'हैडर' => __ ('यूजर इमेज'),
'चौड़ाई' => 5,
'align' => 'left',
'सॉर्टेबल' => सत्य,
'इंडेक्स' => 'user_image'
]
);
वापसी ExtendedGrid :: _ readyCollection ();
}
}
यदि आप पहले से ही अब करीब से देख लेते हैं तो मैं उपयोगकर्ता की छवि के साथ एक क्षेत्र जोड़ने की कोशिश कर रहा हूं।
दुर्भाग्य से, मुझे व्यवस्थापक मोर्चे में कोई परिवर्तन नहीं दिखाई दे रहा है। बेशक, आवश्यक कॉलम InstallSchema स्क्रिप्ट द्वारा पहले ' admin_user ' तालिका में जोड़ा गया था ।
एक पेड़ की तरह प्रारूप में निर्देशिकाओं की सामग्री:
मोड्यूल का नाम ├── ब्लॉक करें ├── ├── कैटलॉग └── └── │ उत्पाद └──। │ संबंधितPosts.php ├── ├── भूमिका └── └── │ ग्रिड └── └── │ User.php └── └── उपयोगकर्ता └── └── संपादित करें └── └── टैब ।। Main.php J संगीतकार.जॉन ├── आदि ।। Di.xml । │ मॉड्यूल.एक्सएमएल ├── सेटअप Hem InstallSchema.php
मैंने गलत क्या किया?