답변:
내가 달성하고 싶었던 설명에 대한 Khoa 덕분에 관리자 형식으로 아약스로 외부 URL을 호출하고 있습니다. 정적 경로를 사용하고 있었으므로 동적 경로를 원했습니다. 여기 내가 한 일이 있습니다.
내 레이아웃 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>
레이아웃 Phtml 파일 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/');
});
});
js 파일에서만 그렇게하십시오.
define(['mage/url'],
function (url) {
'use strict';
var url = url.build('<modulename>/<controllername>/<actionname>');
});
결과는 다음과 같습니다.
http://ip_address/<modulename>/<controllername>/<actionname>
우리가 알아야 할 가장 중요한 것 :에 대한 기본 URL을 설정해야합니다url.build('<Modulename>/<controllername>/<action>/')
.
lib / web / mage / url.js
setBaseUrl: function (url) {
baseUrl = url;
},
build: function(path) {
if (path.indexOf(baseUrl) != -1) {
return path;
}
return baseUrl + path;
}
기본적으로 기본 URL을 설정하는 위치는 두 가지입니다.
vendor/magento/module-checkout/view/frontend/templates/onepage.phtml
vendor/magento/module-checkout/view/frontend/templates/cart/shipping.phtml
return url.setBaseUrl('<?php /* @escapeNotVerified */ echo $block->getBaseUrl();?>');
따라서 관리자는 관리자 기본 URL을 설정해야합니다.