Многостраничный заказ - передача данных - PullRequest
0 голосов
/ 16 сентября 2011

Я делаю простой заказ в небольшом интернет-магазине и хотел бы дать пользователю возможность окончательного обзора.Таким образом, поток Корзина -> Информация о покупателе -> Обзор заказа -> Подтверждение заказа .

ТеперьВопрос в том, как лучше всего передать данные между этапами 2 и 3?

Один из вариантов - использовать HTML и скрытые поля формы.Недостатком является то, что я должен сделать еще одну проверку ввода после фазы 3 (поскольку ввод может изменяться пользователем).

Другой вариант - использовать сеансы.Поскольку порядок хранится в объекте (Sf2 Entity), мне придется преобразовать его в массив, а затем преобразовать обратно.Кроме того, я читал, что помещение слишком большого количества данных в переменные сеанса может негативно повлиять на производительность.

Третий вариант - сохранение в БД, но я бы предпочел не хранить ничего до окончательного подтверждения.

Есть ли лучшие варианты?

Ответы [ 4 ]

2 голосов
/ 16 сентября 2011

Вы можете сохранить эти данные на уровне кэша (например, APC или Memcached) и установить время истечения.

Или, точно так же, как решение Yii , используйте скрытый ввод и установите значение как: хэш (секрет + base64 (данные)) + base64 (данные), и вы должны сначала проверить хеш в фаза 3.

Забыли мой плохой английский. :)

2 голосов
/ 16 сентября 2011

Я думаю, что переменная сеанса должна быть в порядке, если у вас нет тонны данных формы.Вы всегда можете удалить эти данные после окончательного подтверждения, если беспокоитесь о памяти.

1 голос
/ 16 сентября 2011

Я бы сохранил это в сеансе с flashdata. Это прекрасно работает, и сеанс очищается, когда вы хотите.

Чтобы использовать flashdata в Symfony 2:

$this->get('session')->setFlash('key', 'value');
1 голос
/ 16 сентября 2011

Сессии просто хороши для этой работы.Вы можете настроить обработку сеанса так, чтобы данные сохранялись в базе данных.кеширование не является быстрым, поскольку это также просто процедура чтения / записи базы данных.

...