Eu estou procurando uma boa abordagem com adicionar / atualizar já preparado (por padrão) o formulário do usuário Magento (usuário do módulo). O formulário pode ser acessado no painel de administração por este caminho:
Sistema> Todos os usuários> [usuário_ escolhido]> guia principal de edição do usuário (informações da conta)
Agora estou tentando usar o di.xml no meu módulo personalizado, onde especifico dependências: `
<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 é o conteúdo que eu já criei para uma classe Main.php
// @codingStandardsIgnoreFile
namespace Nome do Fornecedor \ Nome do Módulo \ Bloco \ Usuário \ Editar \ Guia;
use \ Magento \ Usuário \ Bloco \ Usuário \ Editar \ Guia \ Principal 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;
classe Main estende UserEditMainTab
{
função pública __construct (
Contexto $ context,
Registry $ registry,
FormFactory $ formFactory,
Sessão $ authSession,
ListsInterface $ localeLists,
matriz $ data = []
) {
parent :: __ constrói ($ context, $ registry, $ formFactory, $ authSession, $ localeLists, $ data);
}
função protegida _prepareForm ()
{
/ ** @var $ model \ Magento \ Usuário \ Modelo \ Usuário * /
$ model = $ this -> _ coreRegistry-> registry ('usuário_acesso');
/ ** @var \ Magento \ Framework \ Data \ Form $ form * /
$ form = $ this -> _ formFactory-> create ();
$ form-> setHtmlIdPrefix ('usuário_');
$ baseFieldset = $ form-> addFieldset ('base_fieldset', ['legend' => __ ('Informações da conta __ TEST')]);
if ($ model-> getUserId ()) {
$ baseFieldset-> addField ('user_id', 'hidden', ['name' => 'user_id']);
} outro {
if (! $ model-> hasData ('is_active'))) {
$ model-> setIsActive (1);
}
}
$ baseFieldset-> addField (
'user_image',
'imagem',
[
'name' => 'user_image',
'label' => __ ('Imagem do usuário'),
'id' => 'imagem_do_usuário',
'title' => __ ('Imagem do usuário'),
'obrigatório' => falso,
'note' => 'Permitir tipo de imagem: jpg, jpeg, png'
]
);
$ baseFieldset-> addField (
'nome do usuário',
'texto',
[
'nome' => 'nome de usuário',
'label' => __ ('Nome do usuário'),
'id' => 'nome de usuário',
'title' => __ ('Nome do usuário'),
'obrigatório' => verdadeiro
]
);
$ baseFieldset-> addField (
'primeiro nome',
'texto',
[
'name' => 'firstname',
'label' => __ ('Primeiro nome'),
'id' => 'primeiro nome',
'title' => __ ('Primeiro nome'),
'obrigatório' => verdadeiro
]
);
$ baseFieldset-> addField (
'último nome',
'texto',
[
'nome' => 'sobrenome',
'label' => __ ('Sobrenome'),
'id' => 'sobrenome',
'title' => __ ('Sobrenome'),
'obrigatório' => verdadeiro
]
);
$ baseFieldset-> addField (
'o email',
'texto',
[
'name' => 'email',
'label' => __ ('Email'),
'id' => 'customer_email',
'title' => __ ('E-mail do usuário'),
'class' => 'entrada obrigatória validar e-mail',
'obrigatório' => verdadeiro
]
);
$ isNewObject = $ model-> isObjectNew ();
if ($ isNewObject) {
$ passwordLabel = __ ('Senha');
} outro {
$ passwordLabel = __ ('Nova senha');
}
$ confirmLabel = __ ('Confirmação de senha');
$ this -> _ addPasswordFields ($ baseFieldset, $ passwordLabel, $ confirmLabel, $ isNewObject);
$ baseFieldset-> addField (
'interface_locale',
'selecionar',
[
'name' => 'interface_locale',
'label' => __ ('Local da interface'),
'title' => __ ('Localidade da interface'),
'values' => $ this -> _ LocaleLists-> getTranslatedOptionLocales (),
'classe' => 'selecionar'
]
);
if ($ this -> _ authSession-> getUser () -> getId ()! = $ model-> getUserId ()) {
$ baseFieldset-> addField (
'está ativo',
'selecionar',
[
'name' => 'is_active',
'label' => __ ('Esta conta é'),
'id' => 'is_active',
'title' => __ ('Status da conta'),
'class' => 'seleção de entrada',
'opções' => ['1' => __ ('Ativo'), '0' => __ ('Inativo')]
]
);
}
$ baseFieldset-> addField ('user_roles', 'hidden', ['name' => 'user_roles', 'id' => '_user_roles']);
$ currentUserVerificationFieldset = $ form-> addFieldset (
'current_user_verification_fieldset',
['legend' => __ ('Verificação atual de identidade do usuário')]
);
$ currentUserVerificationFieldset-> addField (
self :: CURRENT_USER_PASSWORD_FIELD,
'senha',
[
'name' => self :: CURRENT_USER_PASSWORD_FIELD,
'label' => __ ('Sua senha'),
'id' => self :: CURRENT_USER_PASSWORD_FIELD,
'title' => __ ('Sua senha'),
'class' => 'texto de entrada validar-senha-atual-entrada obrigatória',
'obrigatório' => verdadeiro
]
);
$ data = $ model-> getData ();
não definido ($ data ['senha']);
não definido ($ data [self :: CURRENT_USER_PASSWORD_FIELD]);
$ form-> setValues ($ dados);
$ this-> setForm ($ formulário);
retornar pai :: _ prepareForm ();
}
}
e algum código para User.php
namespace Nome_Vendedor \ Nome_Módulo \ Bloco \ Função \ Grade;
use \ Magento \ Usuário \ Bloco \ Função \ Grade \ Usuário como RoleGridUser;
use \ Magento \ Backend \ Block \ Widget \ Grid \ Extended como ExtendedGrid;
classe User estende RoleGridUser
{
função protegida _prepareColumns ()
{
pai :: _ prepareCollection ();
$ this-> addColumn (
'user_image',
[
'header' => __ ('Imagem do usuário'),
'width' => 5,
'align' => 'left',
'classificável' => verdadeiro,
'index' => 'imagem_do_usuário'
]
);
return ExtendedGrid :: _ prepareCollection ();
}
}
Se você olhar mais de perto, já está tentando adicionar um campo à imagem do usuário.
Infelizmente, não vejo nenhuma alteração na frente do administrador. Obviamente, a coluna necessária foi adicionada pelo script InstallSchema anteriormente à tabela ' admin_user '.
Conteúdo dos diretórios em um formato de árvore:
Nome do módulo ├── Bloco │ ├── Catálogo │ │ └── Produto Related │ └── RelatedPosts.php │ ├── Função │ │ └── Grade User │ ─── User.php │ └── Usuário Edit └── Editar Guia Tab └── Main └── Main.php Compos── composer.json ├── etc Di ├── di.xml Module └── module.xml ├── Configuração Install── InstallSchema.php
O que eu fiz errado?