Интерпретировать переменную в файле Javascript Laravel

Мне нужно включить файл JS в мои представления.

Но в этом файле JS мне нужно интерпретировать некоторую переменную PHP.

На самом деле я делаю это:

@section('javascript')
    <script>
        alert("{{{test}}}");
    </script>
@stop

Но мне действительно нужно сделать это:

@section('javascript')
    {!! Html::script('js/test.js') !!}
@stop

test.js:

alert("{{{test}}}");

Мне нужно объявить много переменных. Так что мой файл JS будет очень большим. И я не хочу показывать это прямо в исходном коде.

Как я могу сделать? Спасибо!

3 ответа

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

@section('javascript')
<script>
    var test = {{{$test}}};
</script>
@stop

тогда в вашем javascript-файле внизу вы можете использовать его:

alert(test);

Позвольте мне просто упомянуть, что это не лучший способ обработки передачи переменных из php в javascript.

Когда мне нужно сделать что-то подобное, я обычно создаю метатег на странице, который будет содержать информацию о предупреждении.

<meta name="someAlertValue" content="{{{ $test }}}" />

Тогда вы можете очень легко получить это через jQuery.

var alert_text = $('meta[name=someAlertValue]').attr('content');

Я считаю, что этот подход намного чище и удобнее в обслуживании, чем попытка добавить переменные php прямо в ваш javascript.

У меня была та же проблема, и я хотел иметь отдельный JS, который будет иметь кучу переменных, взятых из config() или даже из базы данных, многоязычной, и будет настраиваться, или даже будет работать с параметрами запроса. Может быть, это сложный путь, но я создал маршрут:

Route::get('/js-modules/test.js',function(){ return view('js-modules.test');})->name('my_js);

Так по мнению resources/views/js-modules/test.blade.php Вы можете поместить свой код js вместе с вашими вещами PHP.

Или вы можете направить его к контроллеру и получить еще больше фоновой работы. он выглядит немного медленно (в браузере) при первом запуске, но во втором запросе он будет обналичен и получен как обычный файл js

И теперь вы можете связать его с любой из ваших страниц с

<script src="{{route('my_js')}}"></script>

Другие вопросы по тегам