2017 © Pedro Peláez
 

magento2-module magento2-checkout-custom-form

Add a custom form to Magento 2 checkout on the first step.

image

sbodak/magento2-checkout-custom-form

Add a custom form to Magento 2 checkout on the first step.

  • Wednesday, April 4, 2018
  • by sbodak
  • Repository
  • 7 Watchers
  • 32 Stars
  • 149 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 11 Forks
  • 4 Open issues
  • 8 Versions
  • 62 % Grown

The README.md

Magento 2 - Checkout custom form

Overview

Add a custom form fields to the Magento 2 checkout. The form will appear in the first checkout step (shipping step) above shipping methods. The form is available for logged in customers and guests. After an order is placed all data are set in sales_order table. Data are still in the form after page refreshed, till cart is active., (*1)

Form data will be set in a quota table through independent API request: - /V1/carts/mine/set-order-custom-fields (for logged in customer) - /V1/guest-carts/:cartId/set-order-custom-field (for guest), (*2)

Compatibility

  • Tag 1.2.* => Magento 2.3
  • Tag 1.1.* => Magento 2.1.x - 2.2.x (no longer supported)

Requirements

  • PHP 7.0 or higher

Installation details

  1. Run composer require sbodak/magento2-checkout-custom-form
  2. Run php bin/magento module:enable Bodak_CheckoutCustomForm
  3. Run php bin/magento setup:upgrade

Sample custom form fields

  • buyer
  • buyer email address
  • purchase order no.
  • goods mark
  • comments

Modify form fields

  • You need to modify service contract data interface in Api/Data/CustomFieldsInterfaces.php
  • You need to modify table schema in Setup/InstallData.php
  • You need to add new fields to observer Observer/AddCustomFieldsToOrder.php which save data in quota and sales table
  • You need to add new item in view/frontend/layout/checkout_index_index.xml
  • You need to modify the methods in Model/Data/CustomFields.php
  • You need to modify the methods in Model/CustomFieldsRepository.php
<item name="custom-checkout-form-fieldset" xsi:type="array">
    <item name="component" xsi:type="string">uiComponent</item>
    <item name="displayArea" xsi:type="string">custom-checkout-form-fields</item>
    <item name="children" xsi:type="array">
        [... place here new definition of your field]
    </item>
</item>

Check official documentation: https://devdocs.magento.com/guides/v2.3/howdoi/checkout/checkout_form.html, (*3)

  • You need to modify template views in view/frontend/templates/order/view/custom_fields.phtml (for customer account) and view/adminhtml/templates/order/view/custom_fields.phtml (for admin panel).
  • Checkout form view is generated automatically using Ui Components

Required entry

If you want to make field required, check this example:, (*4)

<item name="checkout_purchase_order_no" xsi:type="array">
    <item name="component" xsi:type="string">Magento_Ui/js/form/element/abstract</item>
    <item name="config" xsi:type="array">
        <item name="customScope" xsi:type="string">customCheckoutForm</item>
        <item name="template" xsi:type="string">ui/form/field</item>
        <item name="elementTmpl" xsi:type="string">ui/form/element/input</item>
    </item>
    <item name="validation" xsi:type="array">
        <item name="required-entry" xsi:type="boolean">true</item>
    </item>
    <item name="provider" xsi:type="string">checkoutProvider</item>
    <item name="dataScope" xsi:type="string">customCheckoutForm.checkout_purchase_order_no</item>
    <item name="label" xsi:type="string">Purchase order no.</item>
    <item name="sortOrder" xsi:type="string">3</item>
</item>

Fast fields override

You can modify i18n/en_US.csv translation to change field names., (*5)

Checkout view - custom form - Guest

Checkout frontend custom form - Guest, (*6)

Checkout view - custom form - Logged in

Checkout frontend custom form - Logged in, (*7)

Custom account - Order history view

Customer account - Order history view, (*8)

Admin panel - Order Edit

Admin panel - order edit, (*9)

Uninstall

To remove this module run php bin/magento module:uninstall Bodak_CheckoutCustomForm. It will remove all data and drop columns in sales_order and quote tables., (*10)

License

MIT License, (*11)

The Versions

04/04 2018

dev-master

9999999-dev

Add a custom form to Magento 2 checkout on the first step.

  Sources   Download

MIT

The Requires

  • php ~7.0.0

 

by Slawomir Bodak

magento2 custom checkout

04/04 2018

1.1.2

1.1.2.0

Add a custom form to Magento 2 checkout on the first step.

  Sources   Download

MIT

The Requires

  • php ~7.0.0

 

by Slawomir Bodak

magento2 custom checkout

03/03 2018

1.1.1

1.1.1.0

Add a custom form to Magento 2 checkout on the first step.

  Sources   Download

MIT

The Requires

  • php ~7.0.0

 

by Slawomir Bodak

magento2 custom checkout

03/03 2018

1.1.0

1.1.0.0

Add a custom form to Magento 2 checkout on the first step.

  Sources   Download

MIT

The Requires

  • php ~7.0.0

 

by Slawomir Bodak

magento2 custom checkout

13/11 2017

1.0.3

1.0.3.0

Add a custom form to Magento 2 checkout on the first step.

  Sources   Download

MIT

The Requires

  • php ~7.0.0

 

by Slawomir Bodak

magento2 custom checkout

12/11 2017

1.0.2

1.0.2.0

Add a custom form to Magento 2 checkout on the first step.

  Sources   Download

MIT

The Requires

  • php ~7.0.0

 

by Slawomir Bodak

magento2 custom checkout

11/11 2017

1.0.1

1.0.1.0

Add a custom form to Magento 2 checkout on the first step.

  Sources   Download

MIT

The Requires

  • php ~7.0.0

 

by Slawomir Bodak

magento2 custom checkout

11/11 2017

1.0.0

1.0.0.0

Add a custom form to Magento 2 checkout on the first step.

  Sources   Download

MIT

The Requires

  • php ~7.0.0

 

by Slawomir Bodak

magento2 custom checkout