Yireo_LokiCheckout

Jump to User Docs

Core
PHP 8.3 | 8.4
Magento 2.4.7 | 2.4.8
Unit Tests 15
Integration Tests 142
Functional Tests 6
Latest Release 1.0.7

This is the main core package of the LokiCheckout.

Installation

Install this package via composer (assuming you have setup the composer.yireo.com repository correctly already):

composer require yireo/magento2-loki-checkout

Next, enable this module:

bin/magento module:enable Yireo_LokiCheckout

Settings

In the Magento Admin Panel, you can navigate to Store > Configuration > Yireo > Yireo LokiCheckout for various settings.

Support

For getting support, create an Issue under the following project URL:

https://gitlab.yireo.com/loki-checkout/Yireo_LokiCheckout

Configuration Options

The following options of this module can be configured via the Store Configuration:

General > Enable
yireo_loki_checkout/general/enable
Toggle this setting to enable or disable the LokiCheckout on the fly. Probably you will keep this on at all times.
General > Theme
yireo_loki_checkout/general/theme
Change the complete layout of the checkout by using a specific theme.
General > Grid Layout
yireo_loki_checkout/general/grid_layout
All HTML elements in an address block (shipping address, billing address) are ordered according to a Grid Layout (created via a file <code>etc/loki_checkout.xml</code>). This setting configures the default grid.
General > License Key
yireo_loki_checkout/general/license_key
Enter your LokiCheckout license key as found in our Yireo shop under "My Licenses". The license key is also used as composer key to download packages.
Debugging > Enable Debugging
yireo_loki_checkout/debug/enable
With debugging enabled, further details are added through the checkout, ideal for development.
Debugging > Add Hints to HTML Output
yireo_loki_checkout/debug/html_hints
Adds an HTML comment in each LokiComponent for reviewing via your browser.
Debugging > Add Debug Block
yireo_loki_checkout/debug/debug_block
Similar to the original Magento template hints behaviour, this adds a popup with meta-information for each LokiComponent. Either you like it or you find it hugely annoying.
Field settings > Enable Same As Billing Checkbox
yireo_loki_checkout/fields/enable_same_as_billing
The checkbox that let's customers reuse their shipping address as billing address (or vice versa) could be toggled here.
Field settings > Hide Region When Optional
yireo_loki_checkout/fields/hide_region_when_optional
With some countries, the region is required. With some, it is optional. When this option is enabled, the region field disappears if it is optional for the choosen country.
Field settings > Enable Vat ID Only For Companies
yireo_loki_checkout/fields/enable_vat_id_only_for_company
With this option enabled, the VAT ID field is hidden if there is no value for the company given.
Shipping settings > Select Default Shipping Method
yireo_loki_checkout/shipping/select_default_shipping_method
With this option enabled, the first shipping method is automatically selected.
Billing settings > Select Default Payment Method
yireo_loki_checkout/billing/select_default_payment_method
With this option enabled, the first payment method is automatically selected.
Loki Components

The following LokiComponents are created or references in this module:

loki-checkout.steps loki-checkout.progressbar loki-checkout.shipping.address loki-checkout.shipping.address.billing-as-shipping loki-checkout.shipping.address.toggle-select loki-checkout.shipping.address.select loki-checkout.shipping.address.view loki-checkout.shipping.methods loki-checkout.billing.address loki-checkout.billing.address.shipping-as-billing loki-checkout.billing.address.toggle-select loki-checkout.billing.address.select loki-checkout.billing.address.view loki-checkout.payment.methods loki-checkout.sidebar.coupon_code loki-checkout.sidebar.items loki-checkout.sidebar loki-checkout.sidebar.totals loki-checkout.sidebar.preview.quote_details loki-checkout.sidebar.preview.shipping_details loki-checkout.sidebar.preview.billing_address loki-checkout.sidebar.preview.payment_details loki-checkout.newsletter loki-checkout.agreements loki-checkout.steps.shipping loki-checkout.steps.billing loki-checkout.steps.one loki-checkout.customer.customer_email loki-checkout.customer.customer_gender loki-checkout.customer.customer_dob loki-checkout.shipping.address.prefix loki-checkout.shipping.address.firstname loki-checkout.shipping.address.middlename loki-checkout.shipping.address.lastname loki-checkout.shipping.address.suffix loki-checkout.shipping.address.postcode loki-checkout.shipping.address.city loki-checkout.shipping.address.region loki-checkout.shipping.address.country_id loki-checkout.shipping.address.company loki-checkout.shipping.address.telephone loki-checkout.shipping.address.fax loki-checkout.shipping.address.vat_id loki-checkout.shipping.address.save_in_address_book loki-checkout.shipping.address.form.grid-layout loki-checkout.billing.address.prefix loki-checkout.billing.address.firstname loki-checkout.billing.address.middlename loki-checkout.billing.address.lastname loki-checkout.billing.address.suffix loki-checkout.billing.address.postcode loki-checkout.billing.address.city loki-checkout.billing.address.region loki-checkout.billing.address.country_id loki-checkout.billing.address.company loki-checkout.billing.address.telephone loki-checkout.billing.address.fax loki-checkout.billing.address.vat_id loki-checkout.billing.address.save_in_address_book loki-checkout.shipping.address.street0 loki-checkout.shipping.address.street1 loki-checkout.shipping.address.street2 loki-checkout.shipping.address.street3 loki-checkout.billing.address.street0 loki-checkout.billing.address.street1 loki-checkout.billing.address.street2 loki-checkout.billing.address.street3 loki-checkout.billing.address.form.grid-layout loki-checkout.steps.shipping.backward-button loki-checkout.steps.shipping.forward-button loki-checkout.steps.billing.backward-button loki-checkout.steps.billing.forward-button
Module Dependencies

The following dependencies are declared in the module its `etc/module.xml` file:

Magento_Backend Magento_Catalog Magento_Checkout Magento_CheckoutAgreements Magento_Config Magento_Customer Magento_Directory Magento_Eav Magento_Newsletter Magento_Payment Magento_Quote Magento_Sales Magento_Shipping Magento_Store Magento_Vault Yireo_CspUtilities Yireo_HyvaThemeAutoRegistration Yireo_IntegrationTestHelper Yireo_LokiComponents Yireo_LokiFieldComponents Yireo_LokiMapComponents
Composer details
Magento module name
Yireo_LokiCheckout
Composer name
yireo/magento2-loki-checkout
Composer version
1.0.7
Default branch
main
Requirements
magento/framework: ^103.0
magento/module-backend: ^102.0
magento/module-catalog: ^103.0 | ^104.0
magento/module-checkout-agreements: ^100.0
magento/module-checkout: ^100.0
magento/module-config: ^101.0
magento/module-customer: ^103.0
magento/module-directory: ^100.0
magento/module-eav: ^102.0
magento/module-newsletter: ^100.0
magento/module-payment: ^100.0
magento/module-quote: ^101.0
magento/module-sales: ^103.0
magento/module-shipping: ^100.0
magento/module-store: ^101.0
magento/module-vault: ^101.0
yireo/magento2-hyva-theme-auto-registration: ^1.0
yireo/magento2-loki-components: ^1.0
yireo/magento2-loki-field-components: ~0.0 | ^1.0
yireo/magento2-loki-map-components: ~0.0.1
yireo/magento2-csp-utilities: ^1.0
psr/log: ^3.0
guzzlehttp/guzzle: ^7.0
php: ^8.3
ext-intl: *
ext-pcre: *
ext-json: *
ext-dom: *
Releases
dev-main 21 June 2025
1.0.7 20 June 2025
1.0.6 20 June 2025
1.0.5 20 June 2025
1.0.4 18 June 2025
1.0.3 22 May 2025
1.0.2 13 May 2025
1.0.1 28 April 2025
1.0.0 25 April 2025
0.1.21 16 April 2025
0.1.20 10 April 2025
0.1.19 10 April 2025
0.1.18 10 April 2025
0.1.17 09 April 2025
0.1.16 09 April 2025
0.1.15 08 April 2025
0.1.14 04 April 2025
0.1.13 04 April 2025
0.1.12 04 April 2025
0.1.11 11 March 2025
0.1.10 11 March 2025
Changelog

[1.0.7] - 20 June 2025

Fixed

  • Finalize new grid settings
  • Properly allow overriding and merging of loki_checkout.xml
  • Add Dutch translations

[1.0.6] - 20 June 2025

Fixed

  • Undo validation of current step on load

[1.0.5] - 20 June 2025

Fixed

  • Disable jumpto for now
  • Finish new loki-checkout.xml structure
  • Rewrite grid layouts to include sub-entity grid

[1.0.4] - 18 June 2025

Fixed

  • Add loader to coupon code box
  • Fixes for Phpstan level 4
  • Add escaping of variables
  • Move debug icon to SVG file
  • Autocomplete fixes for street, region and city
  • Use Loki test-case in Playwright to detect JS errors automatically
  • Rewrite @helpers to @loki in Playwright tests
  • Draft of ApplePay behaviour
  • Make sure success URL is a string
  • Enhance workflow of errors during final stage
  • PHPUnit behaving strange with skipDispatchToCheckout protected variable
  • Remove old deprecated trait
  • Remove old commented function

[1.0.3] - 22 May 2025

Fixed

  • Register Yireo_LokiFieldComponents as a checkout module
  • Easier support for image output
  • Add label title of payment method code
  • Add assertion for usage in PSP integration tests
  • Ignore redirect URLs with no length
  • Make sure to wait for beforePostNextStep calls before proceeding to next step
  • Add proper support for payment instruction text
  • Additional checks for final button and component validation
  • Trigger component-update event after selecting payment methtod
  • Move remove invisible components to LokiComponents
  • Double-check if image exists before returning payment icon
  • iImprove mechanism to detect tests
  • Remove deprecated use_required_block setting (which is in FieldComponents now)
  • Fix core issue with postcode 1234 allowed by core
  • Double-check integration test for postcode validation
  • Add CSS wrapper
  • Update admin settings with tooltip and regenerate new MODULE.json
  • Add tooltip to config values

[1.0.2] - 13 May 2025

Fixed

  • Fix possible error
  • Only dump active modules to loki-checkout.json
  • Make sure to include empty modules as well for module dump
  • Refactor mechanism to fetch tests from folders
  • Fix additional runs of Playwright tests
  • Fix warning when array keys are not matched
  • Rewrite all beforeInit and afterInit into new initMethod structure
  • Rewrite Alpine from initActions object to methods starting with init
  • Allow PHP 8.4 in CI
  • Remove lines on ES config
  • Fix issue with LokiCheckoutMollie DI type overriding core validators
  • Do not make BLOCK constant public
  • Rewrite integration test flag $skipDispatchToCheckout
  • Mobile fixes
  • Fix default md:col-span-x
  • Fix detection of Hyva/default-csp theme
  • Fix type error when no states are required whatsoever
  • Luma layout prefix was depending on Luma/blank not Magento/blank, typo
  • Prevent error with only optional regions (@RikWillems)

[1.0.1] - 28 April 2025

Fixed

  • Apply Rector fixes
  • Loosen support for magento/module-catalog
  • Remove unused imports
  • Remove deprecated classes
  • Update composer and module deps

[1.0.0] - 25 April 2025

Fixed

  • Allow upgrading to LokiFieldComponents and LokiComponents 1.0
  • Remove x-model because of CSP compliance
  • Fix wrong saveQuote call
  • Failsave for null values in repositories
  • CSP fixes
  • Add additional Loki modules to Hyva Theme autoregistration
  • Add composer suggest
  • Customize backdrop of modal dialog
  • Draft of fast checkout option for PSPs
  • Consolidate vault access in core module
  • Intercept unwanted exceptions while rendering
  • Optimize guest checkout flags
  • Move from x-init-data to separate text/x-loki-init script to prevent escaping issues
  • Implement core customer address validation
  • Move Mollie fixture from core to Mollie module
  • Fix possible issue when LokiCheckout config is used outside of checkout
  • Add lazyloading to cart image
  • Finish grid layout JS switching
  • Add LokiCheckoutGrid component
  • Add empty grid for later usage
  • Remove gridClass, add colSpan and mdColSpan in grid layouts
  • Allow switching of grid layout per country ID
  • Add new Alpine directives x-time, x-datetime, x-date
  • Remove CheckoutSession from context
  • Remove FieldTemplateLocator from context
  • Remove CartRepository from all contexts
  • Rewrite getCartRepository()->save() to getCheckoutState()->saveQuote()
  • Reduce dependencies with CheckoutState::saveQuote()
  • Make loader icon in fields depend on Alpine and activate only after configurable timeout
  • Rename JS validators/ folder to validator/
  • Fix invalid HTML in shipping method input

[0.1.21] - 16 April 2025

Fixed

  • Always persist chosen customer address ID
  • When creating a new address, also reset the customer_address_id on load
  • Change address toggle label on billing step to "Add new billing address"
  • Skip shipping address validation for virtual quotes
  • Fix issue with one-line street being saved earlier
  • Move image from PostNl to core
  • Move common templates from PostNL to core
  • Unify locations and addresses for any maps
  • Turn login into modal popup
  • Add JS password complexity validation
  • Move scripts from "before.body.end" to new "loki-scripts" container
  • Add configurable password complexity
  • Rename LokiCheckoutValidator to LokiComponentValidator
  • Add handle prefixes for Hyva, Luma and Breeze
  • Implement label for gridlayouts
  • Add optional countryId to grid XML
  • Add label to grid

[0.1.20] - 10 April 2025

Fixed

  • Exit after redirecting

[0.1.19] - 10 April 2025

Fixed

  • Use a normal redirect when quote is dead and AJAX is not there

[0.1.18] - 10 April 2025

Fixed

  • Move dep with "yireo/magento2-hyva-theme-auto-registration" to Hyva module
  • Add yireo:loki-checkout:modules:dump command

[0.1.17] - 09 April 2025

Fixed

  • Restructure loki classes for Luma
  • Fix width definition of icon in step button

[0.1.16] - 09 April 2025

Fixed

  • Switch from TimezoneInterface to Timezone because of DI arg scopeType issue
  • Allow switching shipping details in sidebar to alternate template
  • Finalize Post NL templating and abstract Shipping classes
  • Add ext/intl requirement
  • If street is 1 line, explode by space

[0.1.15] - 08 April 2025

Fixed

  • Working version of Post NL form with saved values and tab selection
  • Simplify loading state of target components
  • Remove redundant address-select template
  • Remove unneeded important flag
  • Remove select-icon when loading select-field
  • Add warning if coupon code failed to apply
  • Add generic Location, Timeframe and Address classes, fi with Post NL
  • Mobile fixes

[0.1.14] - 04 April 2025

Fixed

  • Remove overlay when reloading StepForwardButton component

[0.1.13] - 04 April 2025

Fixed

  • StepBackwardButtonViewModel was missing required method

[0.1.12] - 04 April 2025

Fixed

  • Add Playwright functional tests
  • Move to Mollie-specific DI config to Mollie plugin
  • Allow for specific exceptions to redirect back to checkout/cart
  • Remove specific step button templates in favor of FieldComponents
  • Modify overlay when loading next step
  • Add icons to step button
  • Refactoring of Integration Tests
  • Refactor FinalStep to get rid of legacy OneStep code
  • Disable autocomplete for coupon code
  • Implement better DOM ID for shipments too
  • Add better DOM ID for payment methods
  • Remove positive_number filter from telephone and fax
  • Fix issue with duplicate DOM IDs again (but now with test)
  • First draft of pickup locations
  • Resolving of shipping method icons
  • Enhance CSS of method listings
  • Refactor PaymentRedirectUrl plugin to resolver
  • Refactor PaymentMethodIcon plugins into resolvers
  • Enable hide_region_when_optional by default
  • Implement LokiCheckoutRepositoryTestCase
  • Enable GitLab CI/CD
  • Add help text depending upon enable_vat_id_only_for_company
  • Refactor BillingAddress and ShippingAddress components to generic Address components
  • Use separate template for billing address form title
  • Do not ever copy address if the SameAddress service says no

[0.1.11] - 11 March 2025

Fixed

  • Fix issue with grid CSS classes
  • Add better exception message when Context::getStepProvider() is missing

[0.1.10] - 11 March 2025

Fixed

  • Fix order completion for virtual orders
  • Move GridLayout from XML layout to config
  • Remove default grid class
  • Implement option yireo_loki_checkout/general/default_grid_class
  • Dynamically change title of shipping address form
  • Rename field_name to fieldName
  • Fix client-side validation after refactoring to LokiFieldComponents
  • Fix age verification in test
  • Fix gender validation in test
  • Replace PrefixValidator with more generic OptionsValidator
  • Add proper date validation of date of birth
  • Fix possible error if somebody is spoofing value
  • Make sure gender and DOB are required if set so in config
  • Accessibility fixes
  • Fix styling of country box when there is an error
  • Fix location of buttons
  • Move required block
  • Add module dependencies
  • Huge refactoring to move logic into new LokiFieldComponents
  • System Check for module dependencies
  • Add test for new ViewModel
  • Add button label for quote without payment required
  • Add default responsiveness to all fields
  • Fix name of defaults block
  • Re-enable postcode format validator test
  • Refactor and adjust styling
  • Refactor SystemCheck architecture in admin
  • Check for dev modules not being enabled in Production Mode
  • Move EmailValidatorTest
  • Add missing Dutch translations
  • Move email availability in separate validator email_available
  • Rename loki-checkout.css_classes to loki-components.css_classes
  • Rewrite Alpine.store() APIs
  • Add datetime to module overview

[0.1.9] - 25 February 2025

Fixed

  • Standardize JS event names
  • Rename checkout:payment:method-activate to loki-checkout prefix
  • Rename loki-checkout-before-redirect to loki-checkout.before-redirect
  • Rename loki:dom-update to loki-components:dom-update
  • Rename yireo-loki-checkout.component-change to loki-components.component.update
  • Add generic LokiComponentsLogger
  • Refactor yireoLokiCheckoutLogger to LokiCheckoutLogger object
  • StepForwardButton not activated after component updates (use $nextTick)

[0.1.8] - 24 February 2025

Fixed

  • Rerun LokiCheckoutStepsShippingForwardButton.updateValid() at every update

[0.1.7] - 24 February 2025

Fixed

  • Hide payment method component by default
  • Fix non-existing method NewsletterRepository::getDefaultValue()
  • Change Place Order label when virtual quote
  • Add missing Dutch translation

[0.1.6] - 24 February 2025

Added

  • Save in Address Book checkbox
  • Add more translation strings

Fixed

  • Prevent null from throwing TypeError / Beautify shipping method label
  • Allow saving more variable types
  • Call to undefined method getDefaultValue()
  • Wrong exception caught
  • Prevent saving non-existing payment method still set as default

[0.1.5] - 24 February 2025

Fixed

  • Prevent exception when selecting shipping method repeatedly
  • Allow default value in field to be saved automatically
  • Retrieve option model from ViewModel
  • Remove empty option for gender
  • Remove bgcolor from login card
  • Add Dutch translations
  • Remove demo field label "Surname"

[0.1.4] - 23 February 2025

Fixed

  • Intercept exception with addShippingRate

[0.1.3] - 23 February 2025

Fixed

  • Remove unneeded collectTotals
  • Cleanup totals calculation
  • Cleanup cart totals rendering
  • Failsafe to skip loading shipping methods if country ID is empty
  • Make sure default country ID is saved to quote
  • Prevent endless loop when submitting to AJAX which then fails
  • Simplify shipping method calculation
  • Recalculate totals properly via AJAX
  • Fix shipping methods test except totals
  • Re-enable default shipping method pick
  • Dont render address template when HTML is empty anyway
  • Add doc link to module overview
  • Carrier label not found if carrier no longer active

[0.1.2] - 22 February 2025

Fixed

  • Update loki_checkout.xml grid CSS for mobile

[0.1.1] - 22 February 2025

  • Small responsive fixes
  • Show no billing step title if quote is virtual
  • Simplify customer fields block in onestep theme
  • Allow customer fields to be shown in either billing or shipping step
  • Hide shipping address view and shipping methods for virtual quote
  • Hide same-as-billing for virtual quotes
  • Empty address was still showing country
  • Disable Same as Shipping if quote is virtual
  • Allow hiding billing title via XML layout
  • Default payment method was not saved to quote
  • Lift requirements

[0.1.0] - 21 February 2025

  • Version bump

[0.0.7] - 21 February 2025

Added

  • New admin page for Module Status
  • New admin page for System Checks
  • Add reusable RegionProvider

Fixed

  • Set disabled CSS for select as well
  • Fix issue with HTML attributes for nested components
  • Fix JS numeric validator
  • Simplify Agreements handling
  • Add DI plugin as workaround for non-working free_shipping_subtotal
  • Improve streetlines logic with faulty values
  • Append streetline values if streetlines config is wrong
  • Add "not available" text to unavailable shipping methods
  • Add address tag to shipping address preview
  • Fix newsletter subscribe for logged in customers
  • Rewrite newsletter subscribe logic
  • Rename console message from INFO to DEBUG

Removed

  • Remove deprecated {component_name} variable for HTML attribute

Refactor

  • Better handling of streetlines
  • Rename plugin classes to include Plugin suffix
  • Refactor LocalMessageRegistry methods
  • Refactor text_select to avoid unneeded ID suffix

[0.0.6] - 13 February 2025

Fixed

  • Fix address when customer is logged in and has no addresses to select yet
  • Prefix options are separated by semicolumn, not column
  • Properly switch shipping method after initial saving
  • Fix issue in refreshing other targets
  • Fix forms without proper name
  • Enhance payment method icon logic
  • Redirect to cart when AJAX fails with empty quote
  • Load default theme if theme is messed up
  • Add proper UnknownThemeException

Refactor

  • Refactor Validator to remove dependency with component
  • Huge refactor to move context dependencies in the open
  • Move CssClass to LokiComponents

[0.0.5] - 21 January 2025

  • Initial public release

[0.0.4] - 13 January 2025

  • Reach MVP level

[0.0.3] - 19 December 2024

  • Move from Magewire to Loki Components

[0.0.2] - 2 October 2024

  • Copy from GitHub repository to GitLab repository
  • Rename to FriggaCheckout and then LokiCheckout

[0.0.1] - 11 July 2024

  • Initial proof-of-concept (MagewireCheckout)
Jump to User Docs

Last modified: April 30, 2025