Резюме
Я хочу создать атрибут продукта, который не сохраняется в продуктах, или отображается на странице редактирования продукта, как обычные атрибуты продукта. Вместо этого я хочу, чтобы он был сохранен в позиции заказа/котировки и отображался по заказам, счетам и тому подобным. Он также должен быть настроен клиентом в интерфейсе перед добавлением продукта в корзину.
Подробнее
- Как и в случае с пользовательскими опциями, элемент формы должен быть добавлен на страницу продукта интерфейса.
- В отличие от настраиваемых параметров, это не фактический атрибут продукта. Он не должен отображаться на страницах продукта или набора атрибутов администратора.
- Клиент должен предоставить действительное значение. Мне нужно иметь возможность выполнять проверку на стороне сервера.
- Я хочу создать шаблон .phtml, создающий его html. В настоящее время я могу переопределить приложение/дизайн/frontend/base/default/catalog/product/view/type/default.phtml с удовлетворительными (проектными) результатами. Однако я не знаю, как захватить, подтвердить и в конечном итоге сохранить его значение.
- Значение этого элемента формы должно быть сохранено с помощью элемента товара котировки/заказа.
- Это значение должно отображаться на всех и всех счетах, заказах, торговых письмах.
- Я хочу управлять выходом с помощью шаблона или, по крайней мере, иметь возможность возвращать строку, которая используется для отображения значения
Мои вопросы
- Как проверить и в конечном итоге сохранить значение с
<input>
на странице продукта frontend в элементе котировки при добавлении продукта в корзину, а затем в процессе оформления заказа в элемент заказа? - Как отобразить это значение в заказе, счете-фактуре, торговых письмах и таких страницах?
- Как фильтровать коллекцию заказов для извлечения заказов, у которых есть элементы с моим значением, заданным для определенного значения?
Обновление 1
Я обнаружил, что я могу запустить этот код в модели catalog/product
(и, вероятно, sales/quote_item
) во время таких событий, как sales_quote_item_qty_set_after
$infoBuyRequest = $product->getCustomOption('info_buyRequest');
$buyRequest = new Varien_Object(unserialize($infoBuyRequest->getValue()));
$myData = $buyRequest->getMyData();
Таким образом, мне удалось получить мои пользовательские данные, предоставленные клиентом, из моего <input>
на странице продукта.
Я подозреваю, что этот info_buyRequest
сохраняется с элементами котировки и заказа. Если это так, это частично разрешило мои проблемы 1 и 2. Однако я до сих пор не знаю, где это подходит для запуска этого кода, и я не знаю, как отображать его на страницах бэкэнда/цитаты/отчета. Кроме того, я считаю, что поскольку это хранится как сериализованное значение в базе данных, будет очень сложно получить подборки котировок/заказов на основе моих пользовательских данных.