Dapatkan Url Dasar atau Url Dinamis Dalam melihat file Js atau html

16

Saya mencari tahu untuk mendapatkan url dinamis di ujung depan jika saya perlu, saya hanya dapat mendefinisikan mage/urldan menggunakannya sebagaiurl.build('<Modulename>/<controllername>/<action>/')

Ketika saya mencoba hal yang sama untuk backend itu tidak mengembalikan saya hasil yang diharapkan.

Itu memberi url saat ini dan menambahkan jalan yang telah saya berikan.

Adakah yang bisa menjelaskan bagaimana ini berhasil? Apakah saya perlu mendefinisikan baseUrl di suatu tempat?

Priyank
sumber

Jawaban:

9

Terima kasih kepada Khoa untuk penjelasannya yang ingin saya capai adalah dalam formulir admin saya, saya memanggil url eksternal dengan ajax. Saya menggunakan jalur statis sehingga saya menginginkannya secara dinamis. Jadi, inilah yang telah saya lakukan.

File XML Layout Saya

<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 Saya mendefinisikan baseUrl.

    <script>
        require([
            'mage/url'
        ], function(url) {
            return url.setBaseUrl('<?php /* @escapeNotVerified */ echo $block->getAdminBaseUrl();?>');
        })
    </script>

File blok saya yang mengembalikan url basis

<?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 . '/';
    }
}

Sekarang dalam file js saya, saya dapat menggunakannya sebagai.

define([
    'Magento_Ui/js/form/element/abstract',
    'mage/url'
], function (Abstract, url) {
    'use strict';

    return Abstract.extend({
        url.build('namespace_module/controllername/action/');
    });
});
Priyank
sumber
8

Lakukan Saja Hanya dalam file js

define(['mage/url'], 
  function (url) {
   'use strict';
    var url = url.build('<modulename>/<controllername>/<actionname>');
});

Hasilnya adalah:

http://ip_address/<modulename>/<controllername>/<actionname>
Nitesh
sumber
Ini tidak akan memberi saya hasil yang sama di backend. Jadi perlu mendefinisikan basis url di blok pertama
Priyank
Tetapi dalam pertanyaan Anda, Anda menyebutkan bahwa Anda ingin URL di js jadi ini akan membantu. Sekarang beri tahu saya file mana yang Anda inginkan URL . Apakah masalah Anda terpecahkan atau tidak?
Nitesh
Bagaimana kami mendapatkan url dasar situs menggunakan fungsi url.build ()?
Pangeran Patel
menggunakan ini -> define (['mage / url']
Nitesh
6

Hal terpenting yang perlu kita ketahui: Kita perlu mengatur url dasar untukurl.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;
        }

Pada dasarnya, ada dua tempat untuk mengatur url dasar:

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();?>');

Jadi, di admin Anda, Anda harus mengatur url basis admin.

Khoa TruongDinh
sumber
1
Baiklah saya mengerti. Tetapi berbicara tentang formulir admin, di mana saya perlu ini diterapkan. Formulir saya dibuat menggunakan komponen ui jadi bagaimana saya dapat mengatur url seperti yang telah didefinisikan di halaman atau pengiriman?
Priyank
Halo, Anda dapat menjelaskan detail selengkapnya tentang masalah Anda. Tentang komponen Ui: magento.stackexchange.com/questions/97291/…
Khoa TruongDinh