@evgen9586
Backend-dev. Лублу Enterprise и не люблю понты)

Как проще реализовать эту идею?

Суть такая. Точнее что сейчас реализовано.

Клиент на сайте выбирает услугу , вводит ФИО, почту и делает заказ услуги. В админку приходит этот заказ. Но нужно доделать обработку и подтверждение.

А именно/ Из админки нужно высылать на почту заказчику письмо с талоном на услугу и кнопкой подтвердить.
Допустим :

Талон на узи
12.05.2018
8:45
210 Кабинет
МСЧ

Ну и тут кнопочка Подтвердить.

По клику которой статус заказа меняется на подтвержденный. Как отправить талон клиенту в принципе не сложно, меня интеерсует процедура подтверждения. Насколько это сложно
  • Вопрос задан
  • 164 просмотра
Решения вопроса 1
kimono
@kimono
Web developer
class Order {
  const SECRET_KEY = 'not-log-secret-key-2213123123';
}

$token = Yii::$app->security->hashData($order->id, Order::SECRET_KEY);

В письме:
Для подтверждения пройдите по <a href="http://site.domain/order/confirm?token=<?= $token ?>">ссылке</a>

Для подтверждения:
class OrderController extends Controller {
  public function actionConfirm($token){
    if ($id = \Yii::$app->security->validateData($token, Order::SECRET_KEY)){
      if (($order = Order::findOne($id)) && $order->updateAttributes(['confirmed' => true])){
        Yii::$app->session->addFlash('success', 'Талон подтвержден');
        return $this->redirect('orders');
      }
    }

    throw new NotFoundHttpException();
  }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@sidni
Php Developer
В статус заказа ставите не подтвержденный, ту да же в таблицу ордер (или можно завести отдельную чтоб не мусорить) генерируете хеш код для подтверждения, а кнопка подтвердить обычная ссылка на экшен подтверждения и в качестве гет параметра принимает тот самый хеш по нему находите свой ордер и выставляете статус подтвержден
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы