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?

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

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>

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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.