Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Изменить email и пароль на одной странице


Recommended Posts

Добрый день! Подскажите, может кто-нибудь уже это делал или знает как это реализовать. Opencart 2.3.0.2.

Необходимо чтоб пользователь войдя в личный кабинет мог сменить пароль и адрес электронной почты от аккаунта на странице account/password, а не в разных как это сделано изначально (почту тут account/edit, а пароль тут account/password).

Но при этом чтоб они были в разных формах, т.е. чтоб можно было отдельно изменить пароль и отдельно поменять почту.

 

Самостоятельно смог сделать все в одной форме, но это не удобно, т.к. если я хочу поменять только почту, то приходится указывать и пароль и наоборот.

Сделал это так..

 

в файле catalog/view/theme/default/template/account/password.tpl добавил email

<form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data">
	<div class="input-group">
	<label for="input-email">Адрес эл. почты *</label><input type="email" name="email" value="<?php echo $email; ?>" placeholder="Адрес эл. почты *" id="input-email" /><?php if ($error_email) { ?><div class="text-danger">Это поле является обязательным..</div><?php } ?><?php if ($error_warning) { ?><div class="text-danger">Этот адрес эл. почты уже зарегистрирован..</div><?php } ?>
	</div>
	<div class="input-group">
	<label for="input-password">Пароль *</label><input type="password" name="password" value="<?php echo $password; ?>" placeholder="Пароль *" id="input-password" /><?php if ($error_password) { ?><div class="text-danger">Длина пароля не менее 4-х символов..</div><?php } ?>
	</div>
	<div class="input-group">
	<label for="input-confirm">Повторите пароль *</label><input type="password" name="confirm" value="<?php echo $confirm; ?>" placeholder="Повторите пароль *" id="input-confirm" /><?php if ($error_confirm) { ?><div class="text-danger">Пароли не совпадают..</div><?php } ?>
	</div>
	<button type="submit" style="margin-top: 5px;">Сохранить</button>
</form>

в файле catalog/model/account/customer.php добавил

public function editCustomerEmail($data) {
$this->db->query("UPDATE " . DB_PREFIX . "customer SET email = '" . $this->db->escape($data['email']) . "' WHERE customer_id = '" . (int)$this->customer->getId() . "'");
}

 

в файле catalog/controller/account/password.php добавил

перед
$this->model_account_customer->editPassword($this->customer->getEmail(), $this->request->post['password']);
добавил
$this->model_account_customer->editCustomerEmail($this->request->post);

и еще добавил это

if (isset($this->error['warning'])) {
$data['error_warning'] = $this->error['warning'];
} else {
$data['error_warning'] = '';
}
	
if (isset($this->error['email'])) {
$data['error_email'] = $this->error['email'];
} else {
$data['error_email'] = '';
}

и это

if (($this->customer->getEmail() != $this->request->post['email']) && $this->model_account_customer->getTotalCustomersByEmail($this->request->post['email'])) {
$this->error['warning'] = $this->language->get('error_exists');
}
	
if ((utf8_strlen($this->request->post['email']) > 96) || !filter_var($this->request->post['email'], FILTER_VALIDATE_EMAIL)) {
$this->error['email'] = $this->language->get('error_email');
}

Заранее спасибо если кто откликнется и подскажет как делать!

Змінено користувачем EvgenyEvgeny
Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.