ন্যূনতম বয়স যাচাই করার জন্য ইনপুট ক্ষেত্রে চেকআউট করার জন্য একটি কাস্টম নিয়ম যুক্ত করার জন্য এখানে একটি সম্পূর্ণ এবং বাস্তব কার্যকারী উদাহরণ রয়েছে:
নিম্নলিখিত সামগ্রীর সাথে validator
অবজেক্টটিতে একটি মিশ্রণ যুক্ত করতে আপনার মডিউলটিতে একটি প্রয়োজনীয়js-config.js তৈরি করুন Namespace/Modulename/view/frontend/requirejs-config.js
:
var config = {
config: {
mixins: {
'Magento_Ui/js/lib/validation/validator': {
'Namespace_Modulename/js/validator-mixin': true
}
}
}
};
আপনার মডিউল ফোল্ডারে Namespace/Modulename/view/frontend/web/js/validator-mixin.js
নিম্নলিখিত বিষয়বস্তু দিয়ে একটি জেএস স্ক্রিপ্ট তৈরি করুন :
define([
'jquery',
'moment'
], function ($, moment) {
'use strict';
return function (validator) {
validator.addRule(
'validate-minimum-age',
function (value, params, additionalParams) {
return $.mage.isEmptyNoTrim(value) || moment(value, additionalParams.dateFormat).isBefore(moment().subtract(params.minimum_age, 'y'));
},
$.mage.__("Sorry, you don't have the age to purchase the current articles.")
);
return validator;
};
});
, USAGE
আপনি যদি আপনার চেকআউট শিপিং ঠিকানায় কোনও ইনপুট ক্ষেত্র সন্নিবেশ করানোর জন্য এবং আপনি পূর্বে যে কাস্টম নিয়ম যুক্ত করেছেন তার সাথে এই ক্ষেত্রের সামগ্রীটি বৈধতা দিতে যদি আপনি কোনও ম্যাজেন্টো পিএইচপি প্লাগইন ব্যবহার করতে চান তবে এখানে একটি নমুনা কোড রয়েছে:
নিম্নলিখিত বিষয়বস্তু সহ আপনার মডিউলটির ফোল্ডারে একটি di.xml
ফাইল তৈরি করুন etc/frontend
:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="Magento\Checkout\Block\Checkout\LayoutProcessor">
<plugin name="CheckoutLayoutProcessor" type="Namespace\Modulename\Plugin\Block\Checkout\LayoutProcessor" />
</type>
</config>
তারপরে নিম্নলিখিত বিষয়বস্তু দিয়ে LayoutProcessor.php
ফাইলটি তৈরি করুন app/code/Namespace/Modulename/Plugin/Block/Checkout/LayoutProcessor.php
, আপনার প্রয়োজনীয়তার জন্য এটি আপডেট করুন:
<?php
/**
* diglin GmbH - Switzerland
*
* @author Sylvain Rayé <support **at** diglin.com>
* @category diglin
* @package diglin
* @copyright Copyright (c) diglin (http://www.diglin.com)
*/
namespace MyNamespace\Modulename\Plugin\Block\Checkout;
use MyNamespace\Modulename\Helper\AgeValidation;
/**
* Class LayoutProcessor
* @package MyNamespace\Modulename\Plugin\Block\Checkout
*/
class LayoutProcessor
{
/**
* @var \MyNamespace\Checkout\Helper\AgeValidation
*/
private $ageValidation;
/**
* @var \Magento\Framework\Stdlib\DateTime\TimezoneInterface
*/
private $timezone;
/**
* @var \Magento\Framework\App\Config\ScopeConfigInterface
*/
private $scopeConfig;
/**
* LayoutProcessor constructor.
*
* @param \MyNamespace\Checkout\Helper\AgeValidation $ageValidation
* @param \Magento\Framework\Stdlib\DateTime\TimezoneInterface $timezone
* @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
*/
public function __construct(
AgeValidation $ageValidation,
\Magento\Framework\Stdlib\DateTime\TimezoneInterface $timezone,
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
)
{
$this->ageValidation = $ageValidation;
$this->timezone = $timezone;
$this->scopeConfig = $scopeConfig;
}
/**
* Checkout LayoutProcessor after process plugin.
*
* @param \Magento\Checkout\Block\Checkout\LayoutProcessor $processor
* @param array $jsLayout
*
* @return array
*/
public function afterProcess(\Magento\Checkout\Block\Checkout\LayoutProcessor $processor, $jsLayout)
{
$shippingConfiguration = &$jsLayout['components']['checkout']['children']['steps']['children']['shipping-step']
['children']['shippingAddress']['children']['shipping-address-fieldset']['children'];
// Checks if shipping step available.
if (isset($shippingConfiguration)) {
$shippingConfiguration = $this->processAddress(
$shippingConfiguration
);
}
return $jsLayout;
}
/**
* Process provided address to contains checkbox and have trackable address fields.
*
* @param $addressFieldset - Address fieldset config.
*
* @return array
*/
private function processAddress($addressFieldset)
{
$minimumAge = $this->ageValidation->getMinimumAge();
if ($minimumAge === null) {
unset($addressFieldset['my_dob']);
} else {
$addressFieldset['my_dob'] = array_merge(
$addressFieldset['my_dob'],
[
'component' => 'Magento_Ui/js/form/element/date',
'config' => array_merge(
$addressFieldset['my_dob']['config'],
[
'elementTmpl' => 'ui/form/element/date',
// options of datepicker - see http://api.jqueryui.com/datepicker/
'options' => [
'dateFormat' => $this->timezone->getDateFormatWithLongYear(),
'yearRange' => '-120y:c+nn',
'maxDate' => '-1d',
'changeMonth' => 'true',
'changeYear' => 'true',
'showOn' => 'both',
'firstDay' => $this->getFirstDay(),
],
]
),
'validation' => array_merge($addressFieldset['my_dob']['validation'],
[
'required-entry' => true,
'validate-date' => true,
'validate-minimum-age' => $minimumAge, // custom value in year - array('minimum_age' => 16)
]
),
]
);
}
return $addressFieldset;
}
/**
* Return first day of the week
*
* @return int
*/
public function getFirstDay()
{
return (int)$this->scopeConfig->getValue(
'general/locale/firstday',
\Magento\Store\Model\ScopeInterface::SCOPE_STORE
);
}
}
সম্পাদনা
এখানে আপনার ব্যাখ্যার জন্য @ অ্যালান-ঝড় ধন্যবাদ https://alanstorm.com/the-curious-case-of-magento-2-mixins/ এবং @ jisse-reitsma দিক এনেছে
প্লাস ম্যাজেন্টো 2 ডক http://devdocs.magento.com/guides/v2.2/javascript-dev-guide/javascript/js_mixins.html
Loading failed for the <script> with source “.../validator-mixin.js"
এবংScript error for: Namespace_Modulename/js/validator-mixin
।