Como especificar o caminho da imagem da capa no modelo HTML do Knockout?

10

Estou tentando adicionar uma imagem de ícone no Magento_Paypal/web/template/payment/paypal-express.htmlmodelo. O ícone está localizado em web/images. Gostaria de usar o equivalente ao código a seguir, que funciona em modelos HTML de email, mas não neste modelo específico:

<img src="{{view url='images/icon-paypal.png'}}">

Como as variáveis ​​entre chaves não funcionam neste modelo HTML, como você faz referência a uma imagem que existe no web/imagesdiretório do tema ?

thdoan
fonte

Respostas:

23

Você precisa chamar o functionpara jsno modelo.

require.toUrl('images/icon-paypal.png');
Sunil Patel
fonte
3
Era exatamente isso que eu procurava - aceito! Aqui está a tag imagem final para os interessados: <img data-bind="attr: { src: require.toUrl('')+'images/icon-paypal.png' }" alt="">.
Thdan
2
Não seria melhor assim require.toUrl('images/icon-paypal.png');? Eu não tentei, apenas presumo que funcione.
Ben Crook
1
@BenCrook Posso confirmar que sua sugestão funciona.
Darren Felton
Obrigado @Meogi, se alguém puder confirmar, atualizarei a resposta. Estou muito ocupado no Magento 1 para verificá-lo.
Ben Crook
1
@BenCrook Eu verifiquei e posso confirmar que sua solução funciona
Rafał Cz.
3

Se você estiver tentando adicionar apenas um caminho de imagem no arquivo phtml, siga o caminho abaixo,

<img src="<?php echo $block->getViewFileUrl('images/image.png') ?>">\

Para fazer isso da maneira Knockout:

Tente adicionar uma variável à janela do arquivo * .phtml:

<script>
  window.imgpath = '<?php echo $block->getViewFileUrl('images/image.png') ?>';
  </script>

e lendo essa variável da janela:

  function someFunction() {
  var imgPath = window.imgpath;
  }

Mude o seu código de imagem:

<img alt="" data-bind="attr: { src: someFunction() } "/>
Vishwas Soni
fonte
mas esse caminho da janela você deve chamar para a parte principal, então é melhor usar o ko.
Sunil Patel
3

criar variável js em phtml

<script>
  var imgpath = '<?php echo $block->getViewFileUrl('images/image.png') ?>';
</script>

Agora crie nova função js

getImagepaypal: function() {
                return window.imgpath;
            }

no seu arquivo html

 <img alt="" data-bind="attr: { src: getImagepaypal() } "/>
Qaisar Satti
fonte
Você pode me dizer como criar arquivos js e html completos na substituição personalizada e como adicioná-los no xml?
Sarfaraj Sipai 10/10
você deseja substituir os magneto padrão js e html no seu módulo?
Qaisar Satti 10/10
sim, eu quero substituir os arquivos "Magento_CheckoutAgreements" phtml, js e html.
Sarfaraj Sipai 10/10
@SarfarajSipai segue este magento.stackexchange.com/questions/170646/…
Qaisar Satti
Eu sei como criar / substituir módulo, mas eu não sei como substituir "js" e "html" na substituição de tema personalizado, então eu quero saber isso.
Sarfaraj Sipai 10/10
0

Você pode usar isso em cada magento requer arquivos js sem nenhum requisito - é proveniente do fornecedor / magento / theme-module / view / frontend / templates / page / js / require_js.phtml

require.s.contexts ._. config.baseUrl
Alicja Fornalik
fonte