Source of file ShippingDetailsForm.php
Size: 3,084 Bytes - Last Modified: 2021-12-23T10:52:26+00:00
/var/www/docs.ssmods.com/process/src/code/CheckoutSteps/code/forms/ShippingDetailsForm.php
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 | <?php /** * Class ShippingDetailsForm */ class ShippingDetailsForm extends Form { private static $allowed_children = array( 'save' ); public function __construct($controller, $name) { /** ========================================= * @var Order $order * ========================================*/ $cart = ShoppingCart::singleton(); $order = $cart->current(); if ($order && $order->Items()->count()) { $shipping = new ShippingAddressCheckoutComponent(); $fields = $shipping->getFormFields($order); $validator = new RequiredFields($shipping->getRequiredFields($order)); $actions = FieldList::create( FormAction::create( 'save', 'Continue' )->setUseButtonTag(true)->addExtraClass('btn btn-primary') ); } else { $fields = new FieldList(array( LiteralField::create('EmptyCart', '<p>You have nothing added on your cart</p>') )); $validator = null; $actions = new FieldList(); } $fields->insertBefore('Country_readonly', TextField::create('FirstName', 'First Name')); $fields->insertBefore('Country_readonly', EmailField::create('Email', 'Email')); $fields->push(HiddenField::create('Description', '', $order->getReferenceForCart())); parent::__construct($controller, $name, $fields, $actions, $validator); $this->setTemplate('ShippingDetailsForm'); } public function save($data, $form) { /** ========================================= * @var Order $order * @var SiteConfig|CheckoutStepConfig $config * ========================================*/ $cart = ShoppingCart::singleton(); $order = $cart->current(); if ($order && $order->Items()->count()) { // Set the user details if (isset($data['FirstName'])) { $order->setField('FirstName', $data['FirstName']); $order->write(); } if (isset($data['Email'])) { $order->setField('Email', $data['Email']); $order->write(); } $shipping = new ShippingAddressCheckoutComponent(); $shipping->setData($order, $data); $config = SiteConfig::current_site_config(); $nextPage = null; if ($config->AddWarrantyStep && ($warrantyPage = WarrantyPage::get()->first())) { $nextPage = $warrantyPage; } else if ($config->AddAccessoriesStep && ($accessoriesPage = AccessoriesPage::get()->first())) { $nextPage = $accessoriesPage; } else { $nextPage = ReviewOrderPage::get()->first(); } if ($nextPage) { return $this->controller->redirect($nextPage->Link()); } } return $this->controller->httpError(404); } } |