View Folder Structure
All php variable will catches inside js file with config variable like config.ajaxUrl that is pased from phtml file.
Event capture using ui-component form
File Path
├── js
├── form
├── JsFileName
NameSpace/Module
├── View
├── adminhtml
├── layout
├── template
├── ui_component
├── web
├── css
├── js
Create a file inside template => form.phtml
<script type="text/x-magento-init"> { "*": { "NameSpace_Module/js/jsfilename": { "ajaxUrl": "<?php echo $this->getAjaxUrl() ?>" } } } </script>
type="text/x-magento-init" means Magento uses these sections after the page loads.
Create file inside js=>jsfilename.js
Create file inside js=>jsfilename.js
define
(
[
'jquery'
],
function($)
{
'use strict';
return function (config)
{
};
}
);
Event capture using ui-component form
<field name="column_name">
<argument name="data" xsi:type="array">
<item name="options" xsi:type="object">NameSpace\Module\Model\ModuleName\Attribute\Source\FileName</item>
<item name="config" xsi:type="array">
<item name="label" xsi:type="string" translate="true">Field Name</item>
<item name="visible" xsi:type="boolean">true</item>
<item name="dataType" xsi:type="string">number</item>
<item name="formElement" xsi:type="string">select</item>
<item name="source" xsi:type="string">item</item>
<item name="dataScope" xsi:type="string">column_name</item>
<item name="sortOrder" xsi:type="number">1</item>
<item name="component" xsi:type="string">NameSpace_Module/js/form/JsFileName</item>
<item name="validation" xsi:type="array">
<item name="required-entry" xsi:type="boolean">true</item>
</item>
</item>
</argument>
</field>
File Path
├── js
├── form
├── JsFileName
define([
'uiComponent',
'underscore',
'uiRegistry',
'jquery',
'mage/url',
'Magento_Ui/js/form/element/select',
'Magento_Ui/js/modal/modal'
], function (Component,_, uiRegistry,$,url, select, modal) {
'use strict';
return select.extend({
onUpdate: function (value) {
// console.log('Selected Value: ' + value);
var currency = uiRegistry.get('index = column_name');
var commission = uiRegistry.get('index = upload_supplier_commission');
var serviceUrl = url.build('');
console.log(serviceUrl);
var param = 'ajax=1';
$.ajax({
url: serviceUrl,
data: param,
type: "POST",
}).done(function (data) {
currency.value(data.field_name);
});
},
});
});
Url will get from .phtml <script>
require([
'mage/url'
], function(url) {
return url.setBaseUrl('<?php echo $this->getBaseUrl();?>');
})
</script>
Comments
Post a Comment