Вставьте Blade Array в скрипт, используя атрибут данных HTML - PullRequest
0 голосов
/ 15 мая 2018

У меня есть шаблон лезвия, в который включен скрипт. Для этого скрипта необходим доступ к языковым строкам, которые доступны в переменной @lang('intro'). Мне интересно, есть ли способ внедрить весь массив в скрипт через атрибут данных html, а затем извлечь его в скрипте с помощью jquery.

Пока у меня есть следующее:

.. / о / intro.php:

<?php
return [
    'step1' => 'Welcome',
    'step2' => 'Step 2',
];

.. / де / intro.php

<?php
return [
    'step1' => 'Willkommen',
    'step2' => 'Schritt 2',
];

В шаблоне лезвия я вставляю каждую строку:

<script data-id="intro-script" 
        data-introStep1="@lang('intro.step1')" 
        data-introStep2="@lang('intro.step2')" 
        src="{{ mix('js/intro.js') }}">

И получить его, используя jQuery в скрипте intro.js:

document.querySelector('script[data-id="intro-script"]').getAttribute('data-introStep1');

Пока это работает, но не подходит для многих других строк. Мне интересно, возможно ли объединить data-introStep1 и data-introStep2 в одном атрибуте данных, который содержит весь массив @lang('intro'), а не только одну строку для каждого атрибута.

1 Ответ

0 голосов
/ 16 мая 2018

Ваш файл перевода может быть упакован как строка в кодировке JSON следующим образом:

<script data-id="intro-script" 
    data-intro='@json(__('intro'))'
    src="{{ mix('js/intro.js') }}"
></script>

Затем извлеките его, используя Javascript.

const intro = JSON.parse(
  document.querySelector('script[data-id="intro-script"]').dataset.intro
);
...