Je recherche une bonne approche avec l'ajout / mise à jour déjà préparé (par défaut) du formulaire Utilisateur Magento (module-utilisateur). Le formulaire peut être atteint dans le panneau d'administration par ce chemin:
Système> Tous les utilisateurs> [utilisateur choisi]> Onglet d'édition principal de l'utilisateur (Informations sur le compte)
Maintenant, j'essaie d'utiliser di.xml dans mon module personnalisé où je spécifie les dépendances: `
<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" />
"
C'est du contenu que j'ai déjà créé pour une classe Main.php
// @codingStandardsIgnoreFile espace de noms Vendor_Name \ Module_Name \ Block \ User \ Edit \ Tab; utilisez \ Magento \ User \ Block \ User \ Edit \ Tab \ Main comme UserEditMainTab; utilisez \ Magento \ Backend \ Block \ Template \ Context; utilisez \ Magento \ Framework \ Registry; utilisez \ Magento \ Framework \ Data \ FormFactory; utilisez \ Magento \ Backend \ Model \ Auth \ Session; use \ Magento \ Framework \ Locale \ ListsInterface; La classe Main étend UserEditMainTab { fonction publique __construct ( Context $ context, Registry $ Registry, FormFactory $ formFactory, Session $ authSession, ListsInterface $ localeLists, tableau $ data = [] ) { parent :: __ construct ($ context, $ registry, $ formFactory, $ authSession, $ localeLists, $ data); } fonction protégée _prepareForm () { / ** @var $ model \ Magento \ User \ Model \ User * / $ model = $ this -> _ coreRegistry-> registre ('permissions_user'); / ** @var \ Magento \ Framework \ Data \ Form $ form * / $ form = $ this -> _ formFactory-> create (); $ form-> setHtmlIdPrefix ('user_'); $ baseFieldset = $ form-> addFieldset ('base_fieldset', ['legend' => __ ('Account Information __ TEST')]); if ($ model-> getUserId ()) { $ baseFieldset-> addField ('user_id', 'hidden', ['name' => 'user_id']); } autre { if (! $ model-> hasData ('is_active')) { $ model-> setIsActive (1); } } $ baseFieldset-> addField ( 'user_image', 'image', [ 'name' => 'user_image', 'label' => __ ('Image utilisateur'), 'id' => 'image_utilisateur', 'title' => __ ('Image utilisateur'), 'required' => false, 'note' => 'Autoriser le type d'image: jpg, jpeg, png' ] ); $ baseFieldset-> addField ( 'Nom d'utilisateur', 'texte', [ 'name' => 'username', 'label' => __ ('Nom d'utilisateur'), 'id' => 'nom d'utilisateur', 'title' => __ ('Nom d'utilisateur'), 'required' => vrai ] ); $ baseFieldset-> addField ( 'Prénom', 'texte', [ 'name' => 'firstname', 'label' => __ ('Prénom'), 'id' => 'prénom', 'title' => __ ('Prénom'), 'required' => vrai ] ); $ baseFieldset-> addField ( 'nom de famille', 'texte', [ 'name' => 'lastname', 'label' => __ ('Nom'), 'id' => 'nom', 'title' => __ ('Nom'), 'required' => vrai ] ); $ baseFieldset-> addField ( 'email', 'texte', [ 'name' => 'email', 'label' => __ ('Email'), 'id' => 'email_client', 'title' => __ ('Email de l'utilisateur'), 'class' => 'required-entry validate-email', 'required' => vrai ] ); $ isNewObject = $ model-> isObjectNew (); if ($ isNewObject) { $ passwordLabel = __ ('Mot de passe'); } autre { $ passwordLabel = __ ('Nouveau mot de passe'); } $ confirmationLabel = __ ('Confirmation du mot de passe'); $ this -> _ addPasswordFields ($ baseFieldset, $ passwordLabel, $ confirmationLabel, $ isNewObject); $ baseFieldset-> addField ( 'interface_locale', 'sélectionner', [ 'name' => 'interface_locale', 'label' => __ ('Interface Locale'), 'title' => __ ('Interface Locale'), 'values' => $ this -> _ LocaleLists-> getTranslatedOptionLocales (), 'class' => 'select' ] ); if ($ this -> _ authSession-> getUser () -> getId ()! = $ model-> getUserId ()) { $ baseFieldset-> addField ( 'c'est actif', 'sélectionner', [ 'name' => 'is_active', 'label' => __ ('Ce compte est'), 'id' => 'is_active', 'title' => __ ('Statut du compte'), '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' => __ ('Vérification de l'identité de l'utilisateur actuel')] ); $ currentUserVerificationFieldset-> addField ( self :: CURRENT_USER_PASSWORD_FIELD, 'mot de passe', [ 'name' => self :: CURRENT_USER_PASSWORD_FIELD, 'label' => __ ('Votre mot de passe'), 'id' => self :: CURRENT_USER_PASSWORD_FIELD, 'title' => __ ('Votre mot de passe'), 'class' => 'input-text validate-current-password required-entry', 'required' => vrai ] ); $ data = $ model-> getData (); unset ($ data ['mot de passe']); unset ($ data [self :: CURRENT_USER_PASSWORD_FIELD]); $ form-> setValues ($ data); $ this-> setForm ($ form); return parent :: _ prepareForm (); } }
et du code pour User.php
espace de noms Vendor_Name \ Module_Name \ Block \ Role \ Grid; utilisez \ Magento \ User \ Block \ Role \ Grid \ User comme RoleGridUser; utilisez \ Magento \ Backend \ Block \ Widget \ Grid \ Extended comme ExtendedGrid; classe User étend RoleGridUser { fonction protégée _prepareColumns () { parent :: _ prepareCollection (); $ this-> addColumn ( 'user_image', [ 'header' => __ ('Image utilisateur'), 'largeur' => 5, 'align' => 'left', 'sortable' => true, 'index' => 'image_utilisateur' ] ); return ExtendedGrid :: _ prepareCollection (); } }
Si vous regardez de plus près vous déjà maintenant que j'essaie d'ajouter un champ avec l'image de l'utilisateur.
Malheureusement, je ne vois aucun changement dans la partie administrative. Bien sûr, la colonne nécessaire a été ajoutée par le script InstallSchema plus tôt dans la table ' admin_user '.
Contenu des répertoires sous forme d'arborescence:
Module_Name ├── Bloquer │ ├── Catalogue │ │ └── Produit │ │ └── RelatedPosts.php │ ├── Rôle │ │ └── Grille │ │ └── User.php │ └── Utilisateur │ └── Modifier │ └── Tab │ └── Main.php ├── composer.json ├── etc │ ├── di.xml │ └── module.xml ├── Configuration └── InstallSchema.php
Qu'ai-je fait de mal?