---
title: Детали заказа (после оформления)
section: cart
theme: mebelidomanet
framework: bootstrap
redesign_status: done
last_updated: 2026-07-13
files:
  php_inline: []
  php_partials:
    - views/cart/detail.php
    - views/cart/_detail_product.php
  scss:
    - src/client/order-detail-md/style.scss
  js: []
  widgets: []
  shared:
    - src/purchase-detail/
deps_on:
  - shared/purchase-detail
themes_with_analog:
  - mebelmall
  - dommebeli
  - mebelmart
  - freshshop
  - mebelmag
  - mebelbazar
  - hormebel
  - cartzilla
  - mebelmarket
  - stolkomebeli
---

# Детали заказа

## Назначение

Страница после оформления заказа (`/cart-detail/<secret>` → `cart/detail`):
подтверждение «Заказ №NNN», итоговая сумма, кнопка кредита (если применима),
список товаров (`_detail_product.php`), реквизиты заказа. Закрыта от индексации
(`noindex, nofollow`).

## Где живёт

- **HTML:** `views/cart/detail.php`, `views/cart/_detail_product.php` (обе
  theme-specific для mebelidomanet).
- **SCSS (редизайн):** `src/client/order-detail-md/style.scss`, подключён в
  `src/client/index.scss`.
- **Контроллер:** `CartController::actionDetail($secret)` — ищет `Purchase` по
  `secretKey`; для tinkoff может редиректить на оформление кредита.
- **Shared:** `src/purchase-detail/` — **НЕ трогали** (используется другими
  темами в `themes/`, там своя разметка `.purchase-detail*`).

## Данные

- `$model` — `Purchase` (`total`, `publicId`, контакты, `delivery`, `payment`,
  `credit`, `tinkoffLink`, промокод).
- `$model->cart` — JSON-снапшот позиций; каждый item → `_detail_product`
  (`image`, `title`, `url`, `qty`, `price`, `oldPrice`, `options[]`, `modules[]`).
- Картинка item может быть пустой/плейсхолдером (старые заказы) — фолбэк на
  `Product::getCatalogImage()` по `id`.

## Редизайн (2026-07-13, стиль mebel-landing)

Было — BS-разметка (`.container.cart-page`, `h1`, `.display-4` для итога,
`btn-warning`, `.card`+`.badge` в товарах, `table-bordered` с ВСЕМИ полями,
включая пустые). Стало — theme-specific `.md-order*`:

- **Шапка успеха** `.md-order__hero` — круглый бейдж-галочка + eyebrow-pill
  «Заказ оформлен» + `Fraunces`-заголовок «Заказ №NNN» + `Manrope`-лид.
- **Раскладка** `.md-order__layout` — двухколоночник на ≥768px: контент +
  **sticky-сводка** `.md-order__summary` (итог `Fraunces` + CTA кредита
  `.md-btn` / `.md-order__alert`). На мобиле — стек.
- **Товары** `.md-order-product` — карточка: медиа (`aspect-ratio`, фолбэк
  картинки сохранён) + название-ссылка + qty-pill + цена (с зачёркнутой старой) +
  опции/комплектация списком.
- **Инфо о заказе** `.md-order__info` — `<dl>` «ключ→значение» в карточке;
  **пустые поля скрываются** (`array_filter`), имя+фамилия склеены в одну строку.
- Пользовательские данные обёрнуты в `Html::encode` (раньше эхо-сырьё).
  Валюта — «руб.» (как на странице товара). Цвета/типографика — токены
  `_md-tokens.scss`. Проверено в браузере (desktop + mobile), `pnpm run build`
  зелёный.
