Ich bin auf der Suche nach einem guten Ansatz mit bereits vorbereitetem (standardmäßig) Magento-Benutzerformular (Modulbenutzer). Das Formular kann im Admin-Bereich über folgenden Pfad erreicht werden:
System> Alle Benutzer> [Ausgewählter_Benutzer]> Hauptbearbeitungsregisterkarte des Benutzers (Kontoinformationen)
Jetzt versuche ich, di.xml in meinem benutzerdefinierten Modul zu verwenden, in dem ich Abhängigkeiten spezifiziere: `
<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" />
`
Dies ist Inhalt, den ich bereits für eine Main.php-Klasse erstellt habe
// @codingStandardsIgnoreFile
Namespace Vendor_Name \ Module_Name \ Block \ User \ Edit \ Tab;
Verwenden Sie \ Magento \ User \ Block \ User \ Edit \ Tab \ Main als UserEditMainTab.
Verwenden Sie \ Magento \ Backend \ Block \ Template \ Context.
Verwenden Sie \ Magento \ Framework \ Registry.
Verwenden Sie \ Magento \ Framework \ Data \ FormFactory.
Verwenden Sie \ Magento \ Backend \ Model \ Auth \ Session.
Verwenden Sie \ Magento \ Framework \ Locale \ ListsInterface.
Klasse Main erweitert UserEditMainTab
{
öffentliche Funktion __construct (
Kontext $ Kontext,
Registrierung $ Registrierung,
FormFactory $ formFactory,
Sitzung $ authSession,
ListsInterface $ localeLists,
Array $ data = []
) {
parent :: __ Konstrukt ($ context, $ registry, $ formFactory, $ authSession, $ localeLists, $ data);
}}
geschützte Funktion _prepareForm ()
{
/ ** @var $ model \ Magento \ User \ Model \ User * /
$ model = $ this -> _ coreRegistry-> registry ('permissions_user');
/ ** @var \ Magento \ Framework \ Data \ Form $ form * /
$ form = $ this -> _ formFactory-> create ();
$ form-> setHtmlIdPrefix ('user_');
$ baseFieldset = $ form-> addFieldset ('base_fieldset', ['legend' => __ ('Kontoinformationen __ 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',
'Bild',
[
'name' => 'user_image',
'label' => __ ('User Image'),
'id' => 'user_image',
'title' => __ ('User Image'),
'erforderlich' => falsch,
'note' => 'Bildtyp zulassen: jpg, jpeg, png'
]]
);
$ baseFieldset-> addField (
'Nutzername',
'Text',
[
'name' => 'username',
'label' => __ ('Benutzername'),
'id' => 'Benutzername',
'title' => __ ('Benutzername'),
'erforderlich' => wahr
]]
);
$ baseFieldset-> addField (
'Vorname',
'Text',
[
'name' => 'firstname',
'label' => __ ('Vorname'),
'id' => 'Vorname',
'title' => __ ('Vorname'),
'erforderlich' => wahr
]]
);
$ baseFieldset-> addField (
'Familienname, Nachname',
'Text',
[
'name' => 'lastname',
'label' => __ ('Nachname'),
'id' => 'Nachname',
'title' => __ ('Nachname'),
'erforderlich' => wahr
]]
);
$ baseFieldset-> addField (
'Email',
'Text',
[
'name' => 'email',
'label' => __ ('Email'),
'id' => 'customer_email',
'title' => __ ('Benutzer-E-Mail'),
'class' => 'validate-email für erforderlichen Eintrag',
'erforderlich' => wahr
]]
);
$ isNewObject = $ model-> isObjectNew ();
if ($ isNewObject) {
$ passwordLabel = __ ('Passwort');
} else {
$ passwordLabel = __ ('Neues Passwort');
}}
$ verifyLabel = __ ('Passwortbestätigung');
$ this -> _ addPasswordFields ($ baseFieldset, $ passwordLabel, $ verifyLabel, $ isNewObject);
$ baseFieldset-> addField (
'interface_locale',
'wählen',
[
'name' => 'interface_locale',
'label' => __ ('Interface Locale'),
'title' => __ ('Interface Locale'),
'values' => $ this -> _ LocaleLists-> getTranslatedOptionLocales (),
'class' => 'select'
]]
);
if ($ this -> _ authSession-> getUser () -> getId ()! = $ model-> getUserId ()) {
$ baseFieldset-> addField (
'ist aktiv',
'wählen',
[
'name' => 'is_active',
'label' => __ ('Dieses Konto ist'),
'id' => 'is_active',
'title' => __ ('Kontostatus'),
'class' => 'input-select',
'options' => ['1' => __ ('Active'), '0' => __ ('Inactive')]
]]
);
}}
$ baseFieldset-> addField ('user_roles', 'hidden', ['name' => 'user_roles', 'id' => '_user_roles']);
$ currentUserVerificationFieldset = $ form-> addFieldset (
'current_user_verification_fieldset',
['legend' => __ ('Überprüfung der aktuellen Benutzeridentität')]
);
$ currentUserVerificationFieldset-> addField (
self :: CURRENT_USER_PASSWORD_FIELD,
'Passwort',
[
'name' => self :: CURRENT_USER_PASSWORD_FIELD,
'label' => __ ('Ihr Passwort'),
'id' => self :: CURRENT_USER_PASSWORD_FIELD,
'title' => __ ('Ihr Passwort'),
'class' => 'input-text validate-current-password required-entry',
'erforderlich' => wahr
]]
);
$ data = $ model-> getData ();
nicht gesetzt ($ data ['password']);
nicht gesetzt ($ data [self :: CURRENT_USER_PASSWORD_FIELD]);
$ form-> setValues ($ data);
$ this-> setForm ($ form);
return parent :: _ prepareForm ();
}}
}}
und etwas Code für User.php
Namespace Vendor_Name \ Module_Name \ Block \ Role \ Grid;
Verwenden Sie \ Magento \ User \ Block \ Role \ Grid \ User als RoleGridUser.
Verwenden Sie \ Magento \ Backend \ Block \ Widget \ Grid \ Extended als ExtendedGrid.
Klasse Benutzer erweitert RoleGridUser
{
geschützte Funktion _prepareColumns ()
{
parent :: _ prepareCollection ();
$ this-> addColumn (
'user_image',
[
'header' => __ ('User Image'),
'width' => 5,
'align' => 'left',
'sortierbar' => wahr,
'index' => 'user_image'
]]
);
return ExtendedGrid :: _ prepareCollection ();
}}
}}
Wenn Sie genauer hinschauen, werden Sie bereits jetzt versuchen, ein Feld mit dem Bild des Benutzers hinzuzufügen.
Leider sehe ich keine Änderungen in der Admin-Front. Natürlich wurde die erforderliche Spalte vom InstallSchema-Skript früher zur Tabelle ' admin_user ' hinzugefügt .
Inhalt von Verzeichnissen in einem baumartigen Format:
Modulname ├── Blockieren │ ├ Katalog │ │ └ Produkt │ │ └ RelatedPosts.php │ ├ Rolle │ │ └ Gitter │ │ └ User.php │ └ Benutzer │ └ Bearbeiten │ └ Tab │ └ Main.php ├── composer.json ├── etc. │ ├ di.xml │ └ module.xml ├── Setup └── InstallSchema.php
Was habe ich falsch gemacht?