Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 25.04.2017 10:01:09

в подключаемые .js-файлы нужно передать ряд параметров с сервера

Подскажите, подсключая js-файлы в подключаемые .js-файлы нужно передать ряд параметров с сервера, что-то вроде :

<script src=" url('js/my_app.js') "></script>
<script type="text/javascript" language="JavaScript">
	/*<![CDATA[*/
        
	var backendSongsEditorFuncs = new backendSongsEditorFuncs( { // must be called before jQuery(document).ready(function ($) {
		<?php echo prepareParams( true,  array( 'm_pageUrl'=> $m_pageUrl, ... ) )?>
	} );
	jQuery(document).ready(function ($) {
		backendSongsEditorFuncs.onEditorInit()
	});
    
	/*]]>*/
	</script>

И в темплейте вызывать методы backendSongsEditorFuncs обьекта...

Нет ли в laravel 5.4 методов/либ для этих целей чтобы не изобретать велосипед ?

Спасибо!

Не в сети

#2 25.04.2017 20:01:04

Re: в подключаемые .js-файлы нужно передать ряд параметров с сервера

Самый простой вариант - в мастер-шаблоне пишешь

<script>
var xxx = '{{ $xxx }}';
var yyy = '{{ $yyy }}';
</script>

Теперь js-переменные xxx & yyy будут в глобальной области видимости и доступны из любого скрипта, который подключен к странице.

Изменено DBR (25.04.2017 20:02:04)

Не в сети

#3 26.04.2017 08:04:24

Re: в подключаемые .js-файлы нужно передать ряд параметров с сервера

не, ну так нельзя. во-первых {{ … }} экранирует строки для html а не js – зачем в js строки с html entities – непонятно, и во-вторых если переменные содержат пользовательские данные – получается типичная XSS-уязвимость. для js есть json_encode – надо помнить что json является валидным значением переменной в js, так что можно выводить просто как var x = <?= json_encode($x, JSON_UNESCAPED_UNICODE) ?>; если не хочется делать json исполняемым для пущей безопасности можно этот код записать как var x = JSON.parse('<?= json_encode($x, JSON_UNESCAPED_UNICODE) ?>'); хотя я не уверен что в json искейпятся одиночные слэши. возможно там ещё addcslashes нужно будет добавить – это можно протестить в тинкере

Не в сети

Подвал раздела