Во-первых, все должно зависеть от того, какими будут данные «Аренда».Может ли он соответствовать / быть соответствующим образом размещен внутри пользовательской опции продукта?Или вам нужно создать собственный атрибут продаж для хранения данных?
Если вы хотите последнее, вам следует использовать Magento Module Creator от SilkSoftware , чтобы создать модуль для реализации атрибутов продаж.
Также: хороший поток / сценарий использования атрибутов продаж: Magento: установка пользовательского атрибута в модели sales / order_shipment
Во-вторых, захват данных формы- это предполагает, что у вас уже есть блок / форма, созданная и показанная на странице оформления заказа.Я настоятельно рекомендую вам назвать поля в следующей семантической форме:
<input type="text" name="rental[text_data]" />
<input type="text" name="rental[text_data2]" />
Где text_data
и text_data2
- ваши нужные имена переменных.
В конечном итоге заказ отправляется / сохраняется с помощью действия контроллера, называемого saveOrderAction
в Mage_Checkout_OnepageController
, или любого другого класса контроллера, используемого в настоящее время для страницы оформления заказа.Не редактируйте соответствующий файл класса PHP для этого в app/code/core/Mage/Checkout/controllers/OnepageController.php
!Поскольку вы хотите разделить это на другой модуль, вы должны попытаться переписать этот контроллер, чтобы ваш собственный класс Controller внутри вашего модуля, который расширяет вышеупомянутый базовый класс (Mage_Checkout_OnepageController
), должен был использоваться Magento вместо него.
Хороший учебник по переписыванию контроллеров можно найти здесь .
Здесь вы можете сделать любой из двух вариантов:
1.), Который вы можете скопироватьвся функция saveOrderAction и создание подпрограмм для сохранения там данных об аренде.если вы следовали семантике именования, которую я предложил, вы сможете получить данные формы, выполнив:
<?php
// app/code/local/Namespace/Module/controllers/Checkout.php
class Namespace_Module_Checkout extends Mage_Checkout_OnepageController {
public function saveOrderAction() {
.....
$this->getOnepage()->getQuote()->save();
$rental = $this->getRequest->getParam('rental');
$text_data = $rental['text_data'];
$text_data = $rental['text_data2'];
someSaveRoutine($text_data, $text_data2);
//..or someSaveRoutine($rental);
.....
}
}
2.) во-вторых, вы можете заменить приведенный выше код пользовательской отправкой события
$rental = $this->getRequest->getParam('rental');
Mage::dispatchEvent('checkout_onepage_controller_saveorder', array('rental'=> $rental));
затем сделайте соответствующего наблюдателя, чтобы сохранить ваши пользовательские данные где-нибудь.
Я знаю, что это не так много, но это начало.Я посмотрю на редактирование этого, чтобы уточнить в ближайшем будущем.