Szukam dobrego podejścia z dodanym / zaktualizowanym już (domyślnie) formularzem użytkownika Magento (moduł-użytkownik). Do formularza można dotrzeć w panelu administracyjnym, korzystając z tej ścieżki:
System> Wszyscy użytkownicy> [wybrany_użytkownik]> główna karta edycji użytkownika (Informacje o koncie)
Teraz próbuję użyć di.xml w moim module niestandardowym, w którym określam zależności: `
<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" />
`
To jest treść, którą już stworzyłem dla klasy Main.php
// @codingStandardsIgnoreFile przestrzeń nazw nazwa_dostawcy \ nazwa_modułu \ blok \ użytkownik \ edycja \ tab; użyj \ Magento \ User \ Block \ User \ Edit \ Tab \ Main jako UserEditMainTab; użyj \ Magento \ Backend \ Block \ Template \ Context; use \ Magento \ Framework \ Registry; use \ Magento \ Framework \ Data \ FormFactory; użyj \ Magento \ Backend \ Model \ Auth \ Session; use \ Magento \ Framework \ Locale \ ListsInterface; klasa Main rozszerza UserEditMainTab { funkcja publiczna __construct ( Kontekst $ kontekst, Rejestr $ rejestr, FormFactory $ formFactory, Sesja $ authSession, ListsInterface $ localeLists, tablica $ data = [] ) { rodzic :: __ konstrukcja ($ kontekst, $ rejestr, $ formFactory, $ authSession, $ localeLists, $ data); } funkcja chroniona _prepareForm () { / ** @var $ model \ Magento \ Użytkownik \ Model \ Użytkownik * / $ model = $ this -> _ coreRegistry-> register ('permissions_user'); / ** @var \ Magento \ Framework \ Data \ Form $ form * / $ form = $ this -> _ formFactory-> create (); $ form-> setHtmlIdPrefix ('user_'); $ baseFieldset = $ form-> addFieldset ('base_fieldset', ['legend' => __ ('Informacje o koncie __ TEST')]); if ($ model-> getUserId ()) { $ baseFieldset-> addField ('user_id', 'hidden', ['name' => 'user_id']); } else { if (! $ model-> hasData ('is_active')) { $ model-> setIsActive (1); } } $ baseFieldset-> addField ( „user_image”, 'wizerunek', [ „name” => „user_image”, „label” => __ („Obraz użytkownika”), „id” => „user_image”, „title” => __ („Obraz użytkownika”), „wymagane” => fałsz, „note” => „Zezwól na typ obrazu: jpg, jpeg, png” ] ); $ baseFieldset-> addField ( 'Nazwa Użytkownika', 'tekst', [ „name” => „username”, „label” => __ („Nazwa użytkownika”), „id” => „nazwa użytkownika”, „title” => __ („Nazwa użytkownika”), „wymagane” => prawda ] ); $ baseFieldset-> addField ( 'Imię', 'tekst', [ „name” => „firstname”, „label” => __ („Imię”), „id” => „imię”, „title” => __ („Imię”), „wymagane” => prawda ] ); $ baseFieldset-> addField ( 'nazwisko', 'tekst', [ „imię” => „nazwisko”, „label” => __ („Nazwisko”), „id” => „nazwisko”, „title” => __ („nazwisko”), „wymagane” => prawda ] ); $ baseFieldset-> addField ( 'e-mail', 'tekst', [ „name” => „email”, „label” => __ („Email”), „id” => „customer_email”, „title” => __ („E-mail użytkownika”), „klasa” => „wymagany-poprawny adres e-mail”, „wymagane” => prawda ] ); $ isNewObject = $ model-> isObjectNew (); if ($ isNewObject) { $ passwordLabel = __ („Hasło”); } else { $ passwordLabel = __ („Nowe hasło”); } $ potwierdzenieLabel = __ („Potwierdzenie hasła”); $ this -> _ addPasswordFields ($ baseFieldset, $ passwordLabel, $ confirmLabel, $ isNewObject); $ baseFieldset-> addField ( „interfejs_lokalny”, 'Wybierz', [ „name” => „interface_locale”, „label” => __ („Ustawienia regionalne interfejsu”), „title” => __ („Ustawienia regionalne interfejsu”), 'wartości' => $ to -> _ LocaleLists-> getTranslatedOptionLocales (), „klasa” => „wybierz” ] ); if ($ this -> _ authSession-> getUser () -> getId ()! = $ model-> getUserId ()) { $ baseFieldset-> addField ( 'jest aktywny', 'Wybierz', [ „name” => „is_active”, „label” => __ („To konto to”), „id” => „is_active”, „title” => __ („Status konta”), „class” => „input-select”, „opcje” => [„1” => __ („Aktywny”), „0” => __ („Nieaktywny”)] ] ); } $ baseFieldset-> addField ('user_roles', 'hidden', ['name' => 'user_roles', 'id' => '_user_roles']); $ currentUserVerificationFieldset = $ form-> addFieldset ( „current_user_verification_fieldset”, ['legend' => __ („Bieżąca weryfikacja tożsamości użytkownika”)] ); $ currentUserVerificationFieldset-> addField ( self :: CURRENT_USER_PASSWORD_FIELD, 'hasło', [ 'name' => self :: CURRENT_USER_PASSWORD_FIELD, „label” => __ („Twoje hasło”), „id” => self :: CURRENT_USER_PASSWORD_FIELD, „title” => __ („Twoje hasło”), „class” => „input-text validate-current-password wymagany-wpis”, „wymagane” => prawda ] ); $ data = $ model-> getData (); nieustawiony ($ data [„hasło”]); nieustawiony ($ data [self :: CURRENT_USER_PASSWORD_FIELD]); $ form-> setValues ($ data); $ this-> setForm ($ form); return parent :: _ preparForm (); } }
i trochę kodu dla User.php
przestrzeń nazw nazwa_dostawcy \ nazwa_modułu \ blok \ rola \ siatka; użyj \ Magento \ User \ Block \ Role \ Grid \ User jako RoleGridUser; użyj \ Magento \ Backend \ Block \ Widget \ Grid \ Extended jako ExtendedGrid; klasa Użytkownik rozszerza RoleGridUser { funkcja chroniona _prepareColumns () { parent :: _ preparCollection (); $ this-> addColumn ( „user_image”, [ „header” => __ („Obraz użytkownika”), „szerokość” => 5, „align” => „left”, „sortable” => true, „index” => „user_image” ] ); return ExtendedGrid :: _ preparCollection (); } }
Jeśli przyjrzysz się bliżej, już teraz próbuję dodać pole z wizerunkiem użytkownika.
Niestety nie widzę żadnych zmian w panelu administratora. Oczywiście potrzebna kolumna została wcześniej dodana przez skrypt InstallSchema do tabeli „ admin_user ”.
Zawartość katalogów w formacie drzewiastym:
Nazwa modułu ├── Blokuj │ ├── Katalog └── │ └── Produkt └── │ └── RelatedPosts.php ├── ├── Rola │ │ └── Siatka └── │ └── User.php └── └── Użytkownik └── └── Edytuj │ └── Tab └── └── Main.php ├── composer.json ├── itp ├── ├── di.xml └── └── module.xml ├── Konfiguracja └── InstallSchema.php
Co zrobiłem źle?