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?