Merci à Khoa pour son explication ce que je voulais réaliser est dans mon formulaire d'administration que j'appelle une URL externe avec ajax. J'utilisais un chemin statique donc je le voulais dynamiquement. Voici donc ce que j'ai fait.
Mon fichier XML de mise en page
<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>
Layout Phtml File J'ai défini la baseUrl.
<script>
require([
'mage/url'
], function(url) {
return url.setBaseUrl('<?php /* @escapeNotVerified */ echo $block->getAdminBaseUrl();?>');
})
</script>
Mon fichier de bloc qui renvoie l'url de base
<?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 . '/';
}
}
Maintenant, dans mes fichiers js, je peux l'utiliser comme.
define([
'Magento_Ui/js/form/element/abstract',
'mage/url'
], function (Abstract, url) {
'use strict';
return Abstract.extend({
url.build('namespace_module/controllername/action/');
});
});
La chose la plus importante que nous devons savoir: nous devons définir l'URL de base pour
url.build('<Modulename>/<controllername>/<action>/')
:lib / web / mage / url.js
Fondamentalement, il existe deux endroits où définir l'URL de base:
vendor/magento/module-checkout/view/frontend/templates/onepage.phtml
vendor/magento/module-checkout/view/frontend/templates/cart/shipping.phtml
Donc, dans votre administrateur, vous devez définir l'URL de base de l'administrateur.
la source