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.