Estoy buscando un buen enfoque con el formulario de agregar / actualizar ya preparado (por defecto) Magento User (module-user). Se puede acceder al formulario en el panel de administración mediante esta ruta:
Sistema> Todos los usuarios> [elegido_usuario]> Pestaña de edición principal del usuario (Información de la cuenta)
Ahora estoy intentando usar di.xml en mi módulo personalizado donde especifico dependencias: `
<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" />
``
Este es el contenido que ya hice para una clase Main.php
// @codingStandardsIgnoreFile espacio de nombres Nombre del proveedor \ Nombre del módulo \ Bloque \ Usuario \ Editar \ Pestaña; use \ Magento \ User \ Block \ User \ Edit \ Tab \ Main como UserEditMainTab; use \ Magento \ Backend \ Block \ Template \ Context; use \ Magento \ Framework \ Registry; use \ Magento \ Framework \ Data \ FormFactory; use \ Magento \ Backend \ Model \ Auth \ Session; use \ Magento \ Framework \ Locale \ ListsInterface; La clase Main extiende UserEditMainTab { función pública __construct ( Contexto $ context, Registro $ registro, FormFactory $ formFactory, Sesión $ authSession, ListsInterface $ localeLists, matriz $ datos = [] ) { parent :: __ construct ($ context, $ registro, $ formFactory, $ authSession, $ localeLists, $ data); } función protegida _prepareForm () { / ** @var $ model \ Magento \ User \ Model \ User * / $ model = $ this -> _ coreRegistry-> registro ('permisos_usuario'); / ** @var \ Magento \ Framework \ Data \ Form $ form * / $ form = $ this -> _ formFactory-> create (); $ form-> setHtmlIdPrefix ('user_'); $ baseFieldset = $ form-> addFieldset ('base_fieldset', ['legend' => __ ('Información de la cuenta __ TEST')]); if ($ model-> getUserId ()) { $ baseFieldset-> addField ('user_id', 'hidden', ['name' => 'user_id']); } más { if (! $ model-> hasData ('is_active')) { $ modelo-> setIsActive (1); } } $ baseFieldset-> addField ( 'user_image', 'imagen', [ 'name' => 'user_image', 'label' => __ ('Imagen de usuario'), 'id' => 'user_image', 'title' => __ ('Imagen de usuario'), 'required' => false, 'note' => 'Permitir tipo de imagen: jpg, jpeg, png' ] ); $ baseFieldset-> addField ( 'nombre de usuario', 'texto', [ 'name' => 'nombre de usuario', 'label' => __ ('Nombre de usuario'), 'id' => 'nombre de usuario', 'title' => __ ('Nombre de usuario'), 'required' => verdadero ] ); $ baseFieldset-> addField ( 'primer nombre', 'texto', [ 'name' => 'firstname', 'label' => __ ('Nombre'), 'id' => 'nombre', 'title' => __ ('Nombre'), 'required' => verdadero ] ); $ baseFieldset-> addField ( 'apellido', 'texto', [ 'name' => 'apellido', 'label' => __ ('Apellido'), 'id' => 'apellido', 'title' => __ ('Apellido'), 'required' => verdadero ] ); $ baseFieldset-> addField ( 'Email', 'texto', [ 'name' => 'email', 'label' => __ ('Correo electrónico'), 'id' => 'customer_email', 'title' => __ ('Correo electrónico del usuario'), 'class' => 'required-entry validate-email', 'required' => verdadero ] ); $ isNewObject = $ modelo-> isObjectNew (); if ($ isNewObject) { $ passwordLabel = __ ('Contraseña'); } más { $ passwordLabel = __ ('Nueva contraseña'); } $ confirmLabel = __ ('Confirmación de contraseña'); $ this -> _ addPasswordFields ($ baseFieldset, $ passwordLabel, $ confirmLabel, $ isNewObject); $ baseFieldset-> addField ( 'interface_locale', 'Seleccione', [ 'name' => 'interface_locale', 'label' => __ ('Configuración regional de interfaz'), 'title' => __ ('Configuración regional de interfaz'), 'values' => $ this -> _ LocaleLists-> getTranslatedOptionLocales (), 'class' => 'select' ] ); if ($ this -> _ authSession-> getUser () -> getId ()! = $ model-> getUserId ()) { $ baseFieldset-> addField ( 'está activo', 'Seleccione', [ 'name' => 'is_active', 'label' => __ ('Esta cuenta es'), 'id' => 'is_active', 'title' => __ ('Estado de la cuenta'), 'class' => 'input-select', 'opciones' => ['1' => __ ('Activo'), '0' => __ ('Inactivo')] ] ); } $ baseFieldset-> addField ('user_roles', 'hidden', ['name' => 'user_roles', 'id' => '_user_roles']); $ currentUserVerificationFieldset = $ form-> addFieldset ( 'current_user_verification_fieldset', ['leyenda' => __ ('Verificación de identidad del usuario actual')] ); $ currentUserVerificationFieldset-> addField ( self :: CURRENT_USER_PASSWORD_FIELD, 'contraseña', [ 'name' => self :: CURRENT_USER_PASSWORD_FIELD, 'label' => __ ('Su contraseña'), 'id' => self :: CURRENT_USER_PASSWORD_FIELD, 'title' => __ ('Su contraseña'), 'class' => 'input-text validate-current-password required-entry', 'required' => verdadero ] ); $ datos = $ modelo-> getData (); sin establecer ($ datos ['contraseña']); unset ($ data [self :: CURRENT_USER_PASSWORD_FIELD]); $ form-> setValues ($ data); $ this-> setForm ($ form); return parent :: _ prepareForm (); } }
y algo de código para User.php
espacio de nombres Nombre_proveedor \ Nombre_módulo \ Bloque \ Función \ Cuadrícula; use \ Magento \ User \ Block \ Role \ Grid \ User como RoleGridUser; use \ Magento \ Backend \ Block \ Widget \ Grid \ Extended como ExtendedGrid; clase Usuario extiende RoleGridUser { función protegida _prepareColumns () { parent :: _ prepareCollection (); $ this-> addColumn ( 'user_image', [ 'header' => __ ('Imagen de usuario'), 'ancho' => 5, 'align' => 'left', 'clasificable' => verdadero, 'index' => 'user_image' ] ); return ExtendedGrid :: _ prepareCollection (); } }
Si miras más de cerca, ahora que estoy tratando de agregar un campo con la imagen del usuario.
Desafortunadamente, no veo ningún cambio en el frente de administración. Por supuesto, la columna necesaria fue agregada por el script InstallSchema anteriormente a la tabla ' admin_user '.
Contenido de directorios en formato de árbol:
Nombre del módulo ├── Bloque │ ├── Catálogo │ │ └── Producto │ │ └── RelatedPosts.php │ ├── Rol │ │ └── Cuadrícula │ │ └── User.php │ └── Usuario │ └── Editar └── └── Pestaña │ └── Main.php ├── composer.json ├── etc. │ ├── di.xml │ └── module.xml ├── Configuración └── InstallSchema.php
¿Qué hice mal?