- 22 Jul 2017, 16:58
#74424
Olá pessoal, gostaria de saber se tem como bloquear alterações da conta pelo usuário após a finalização do cadastro. Tipo, após o cliente finalizar o cadastro ele não poderá alterar nome e CPF.
Por um e-commerce livre, confiável e profissional
<?php echo $header; ?>
<?php
$inputsDisabled = [
ID-DO-CAMPO-QUE-DEVE-SER-DESABILITADO,
ID-DO-CAMPO-QUE-DEVE-SER-DESABILITADO
];
?>
<input type="text" name="custom_field[<?php echo $custom_field['custom_field_id']; ?>]" value="<?php echo (isset($account_custom_field[$custom_field['custom_field_id']]) ? $account_custom_field[$custom_field['custom_field_id']] : $custom_field['value']); ?>" placeholder="<?php echo $custom_field['name']; ?>" id="input-custom-field<?php echo $custom_field['custom_field_id']; ?>" class="form-control" />
<?php if (in_array($custom_field['custom_field_id'], $inputsDisabled)) { ?>
<input type="text" value="<?php echo (isset($account_custom_field[$custom_field['custom_field_id']]) ? $account_custom_field[$custom_field['custom_field_id']] : $custom_field['value']); ?>" class="form-control" disabled />
<?php } else { ?>
<input type="text" value="<?php echo (isset($account_custom_field[$custom_field['custom_field_id']]) ? $account_custom_field[$custom_field['custom_field_id']] : $custom_field['value']); ?>" class="form-control" />
<?php } ?>
if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
$inputsDisabled = [
ID-DO-CAMPO-QUE-DEVE-SER-DESABILITADO,
ID-DO-CAMPO-QUE-DEVE-SER-DESABILITADO
];
foreach($inputsDisabled as $inputId) {
if (isset($this->request->post[$inputId])) {
unset($this->request->post[$inputId]);
}
}
valdeir2000 escreveu: ↑23 Jul 2017, 18:51 É possível adicionar isso com uma alteração no código.Obrigado pela resposta! Não tenho muito conhecimento em html, minha versão é 2.3.0.2 será que funciona? Isto seria um módulo essencial para o Opencart, pois ajudaria até mesmo na prevenção de possíveis fraudes. O cliente podendo alterar todas as informações inclusive nome e CPF é sopa no mel para fraudadores.
Se você quiser fazer manualmente, segue o tutorial abaixo.
Template:
1º - Abra o arquivo catalog/view/theme/*/template/account/edit.tpl
2º - Antes deCódigo: Selecionar todosadicione o código abaixo<?php echo $header; ?>
Código: Selecionar todos3º - Substitua o código<?php $inputsDisabled = [ ID-DO-CAMPO-QUE-DEVE-SER-DESABILITADO, ID-DO-CAMPO-QUE-DEVE-SER-DESABILITADO ]; ?>
Código: Selecionar todospor<input type="text" name="custom_field[<?php echo $custom_field['custom_field_id']; ?>]" value="<?php echo (isset($account_custom_field[$custom_field['custom_field_id']]) ? $account_custom_field[$custom_field['custom_field_id']] : $custom_field['value']); ?>" placeholder="<?php echo $custom_field['name']; ?>" id="input-custom-field<?php echo $custom_field['custom_field_id']; ?>" class="form-control" />
Código: Selecionar todos'<?php if (in_array($custom_field['custom_field_id'], $inputsDisabled)) { ?> <input type="text" value="<?php echo (isset($account_custom_field[$custom_field['custom_field_id']]) ? $account_custom_field[$custom_field['custom_field_id']] : $custom_field['value']); ?>" class="form-control" disabled /> <?php } else { ?> <input type="text" value="<?php echo (isset($account_custom_field[$custom_field['custom_field_id']]) ? $account_custom_field[$custom_field['custom_field_id']] : $custom_field['value']); ?>" class="form-control" /> <?php } ?>
'
'
Controller:
1º - Abra o arquivo catalog/controller/account/edit.php
2º - Procure esse código abaixoCódigo: Selecionar todos3º - Na linha de baixo (antes de $this->model_account_customer->editCustomer($this->request->post);, adicione o código abaixo.if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
Código: Selecionar todos'$inputsDisabled = [ ID-DO-CAMPO-QUE-DEVE-SER-DESABILITADO, ID-DO-CAMPO-QUE-DEVE-SER-DESABILITADO ]; foreach($inputsDisabled as $inputId) { if (isset($this->request->post[$inputId])) { unset($this->request->post[$inputId]); } }
'
'
Se você tiver conhecimento básico em PHP e HTML, é possível transformar esse código em um módulo e fazer com outros campos do tipo data, select, checkbox, radio, etc.
Identificando o ID do campo customizado:
Na administração, acesse o menu Customers -> Custom Fields (Clientes -> Personalizar cadastro), na coluna "Id" fica o id do campo customizado.
Ps.: Fiz baseado na versão 2.0.1.1
valdeir2000 escreveu: ↑25 Jul 2017, 02:26 Não sei te dizer se é possível, mas você pode fazer um backup da loja loja, tentar e postar seu feedback. Isso ajuda os outros usuários e nós podemos adaptar na sua loja.Desculpe a demora em responder, funcionou na versão 2.3.0.2. Criei um cliente de testes e sua dica funcionou perfeitamente, os campos que fiz o teste foram CPF e data de nascimento. Após implementar suas dicas os campos citados ficam em cinza, impedindo a alteração pelo cliente. Parabéns!!!
Só um adendo, ao fazer essas modificações, o ideal é acessar o Painel de Admin > Extensions > Modification > Refresh.
Gente preciso de ajuda urgente. Na migraç&a[…]
Ola @alex3257 Se você precisa apenas ver […]