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?