ขอบคุณ Khoa สำหรับคำอธิบายของเขาสิ่งที่ฉันต้องการบรรลุคือในแบบฟอร์มผู้ดูแลระบบของฉันฉันกำลังเรียก url ภายนอกด้วย ajax ฉันกำลังใช้เส้นทางแบบคงที่ดังนั้นฉันต้องการมันแบบไดนามิก ดังนั้นนี่คือสิ่งที่ฉันได้ทำ
ไฟล์ XML ของเลย์เอาต์ของฉัน
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceContainer name="content">
<uiComponent name="namespace_modulename_form"/>
<block class="Namespace\Modulename\Block\Adminhtml\Edit" name="edit" template="Namespace_Modulename::edit.phtml" />
</referenceContainer>
</body>
</page>
เลย์เอาต์ไฟล์ HTML ที่ฉันกำหนด baseUrl
<script>
require([
'mage/url'
], function(url) {
return url.setBaseUrl('<?php /* @escapeNotVerified */ echo $block->getAdminBaseUrl();?>');
})
</script>
ไฟล์บล็อกของฉันซึ่งส่งคืน URL พื้นฐาน
<?php
namespace Namespcae\Modulename\Block\Adminhtml;
class Edit extends \Magento\Framework\View\Element\Template
{
protected $_configReader;
public function __construct(
\Magento\Framework\View\Element\Template\Context $context,
\Magento\Framework\App\DeploymentConfig\Reader $configReader
) {
$this->_configReader = $configReader;
parent::__construct($context);
}
public function getAdminBaseUrl(){
$config = $this->_configReader->load();
$adminSuffix = $config['backend']['frontName'];
return $this->getBaseUrl() . $adminSuffix . '/';
}
}
ตอนนี้ในไฟล์ js ของฉันฉันสามารถใช้มันเป็น
define([
'Magento_Ui/js/form/element/abstract',
'mage/url'
], function (Abstract, url) {
'use strict';
return Abstract.extend({
url.build('namespace_module/controllername/action/');
});
});