Temel URL'yi veya Dinamik URL'yi Alın Js veya html dosyalarını görüntüleme


16

Ön uçta dinamik url almak için anladım, eğer ihtiyacım varsa basitçe tanımlayabilirim mage/urlveurl.build('<Modulename>/<controllername>/<action>/')

Aynı şeyi arka uç için denediğimde bana beklenen sonucu döndürmedi.

Geçerli URL'yi verdi ve verdiğim yolu ekledi.

Herkes bunun nasıl çalıştığını açıklayabilir. BaseUrl'i bir yerde tanımlamam gerekir mi?

Yanıtlar:


9

Khoa'ya yaptığı açıklama için teşekkür etmek istediğim yönetici formumda ajax ile harici bir url diyorum. Statik bir yol kullanıyordum, bu yüzden dinamik olarak istedim. İşte yaptığım şey.

Mizanpaj XML Dosyam

<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>

Düzen Phtml Dosyası baseUrl'yi tanımladım.

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

Temel URL'yi döndüren blok dosyam

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

Şimdi benim js dosyaları olarak kullanabilirsiniz.

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

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

8

Sadece Bunu Sadece js dosyasında yapın

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

Sonuç:

http://ip_address/<modulename>/<controllername>/<actionname>

Bu bana aynı sonucu vermeyecek Arka uçta. Bu yüzden ilk önce bloktaki url'yi tanımlamanız gerekiyor
Priyank

Ama ur Söz konusu u istemek söz URL'yi içinde js bu yararlı olacak böylece. Şimdi hangi dosyada URL istediğinizi söyleyin . Sorununuz çözüldü mü çözülmedi mi?
Nitesh

Url.build () işlevini kullanarak sitenin temel URL'sini nasıl alırız?
Prens Patel

bunu kullanarak -> tanımla (['mage / url']
Nitesh

6

Bilmemiz gereken en önemli şey: Temel URL'yi aşağıdakiler için ayarlamamız gerekirurl.build('<Modulename>/<controllername>/<action>/') :

lib / web / büyücü / url.js

        setBaseUrl: function (url) {
            baseUrl = url;
        },
        build: function(path) {
            if (path.indexOf(baseUrl) != -1) {
                return path;
            }
            return baseUrl + path;
        }

Temel olarak, temel URL'nin ayarlanacağı iki yer vardır:

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

Bu nedenle, yöneticinizde yönetici tabanı URL'sini ayarlamanız gerekir.


1
Tamam anladım. Ama bunun uygulanmasını istediğim yönetici formları hakkında konuşmak. Formum ui bileşeni kullanılarak oluşturuldu, böylece url'yi sayfa üzerinde veya gönderimde tanımlandığı şekilde nasıl ayarlayabilirim?
Priyank

Merhaba, sorununuzla ilgili daha fazla ayrıntıyı açıklayabilirsiniz. Ui bileşeni hakkında: magento.stackexchange.com/questions/97291/…
Khoa TruongDinh
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.