Как в Drupal передать переменную из PHP в JS
Столкнулся с задачей – передать в Drupal из кода своего модуля значение переменной PHP в код JavaScript. Немного погуглив, нашел подходящее решение на drupal.org:
drupal_add_js ( array ( ‘myModule’ => array ( ‘key’ => ‘value’ ) ) , ‘setting’ ) ;
?>?php>
Теперь чтобы получить в js значение переменной key, нужно достать ее из объекта Drupal:
Вот собственно и все, задача решена.
Тэги:
- ‹ Работа с приватными файлами в Drupal
- Устраняем проблему с форматированием html в CKEditor в Drupal ›
Комментарии
25 сентября 2015 — 13:43
А что если эта связка не
А что если эта связка не работает?
drupal_add_js(array(‘imageupload’ => array(‘key’ => ‘value’)), ‘setting’);
drupal_add_js(drupal_get_path(‘module’, ‘imageupload’) . ‘/imageupload.js’);
(function($, Drupal, window, document, undefined) alert(Drupal.settings);
>)(jQuery, Drupal, this, this.document);
Где моя ошибка? Спасибо
Уже стало понятно. Не дождалась подгрузки дома.
На $(document).ready всё работает.
Трансформируем переменные Laravel PHP в Javascript
Бывают ситуация, когда вам нужно передать данные в JavaScript. Традиционными способами это может быть весьма утомительно, особенно если ваше приложение растёт.
В этом уроке я покажу, как можно элегантно передать переменные из PHP в Javascript. Для этой цели Jeffery Way из Laracasts создал пакет Utilities, с пространством имен: Laracasts\Utilities.
Установка пакета
Запустите следующую команду в composer:
composer require laracasts/utilities
Для Laravel 5.5+ этот шаг можно пропустить, так как фреймворк сам зарегистрирует пакет.
Для остальных версий, в файл app.php в массив provider добавьте нового провайдера:
// config/app.php 'providers' => [ '. ', 'Laracasts\Utilities\JavaScript\JavaScriptServiceProvider' ];
Выполните одну из следующих команд для публикации вендора:
(первая опубликует всех неопубликованных вендоров, вторая — только нужного нам. — прим.переводчика)
php artisan vendor:publish // Или. php artisan vendor:publish --provider="Laracasts\Utilities\JavaScript\JavaScriptServiceProvider"
Конфигурация пакета
Если вы откроете конфигурационный файл этого пакета config/javascript.php, вы найдете два параметра:
bind_js_vars_to_this_view — к какому view будут добавлены переменные. наиболее подходящий это footer.
js_namespace — по умолчанию это window, поэтому все переменные будут добавлены в его глобальный объект.
'footer', /* |-------------------------------------------------------------------------- | Пространство имен JavaScript |-------------------------------------------------------------------------- | | По умолчанию, мы добавляем переменные глобальному объекту window. | Рекомендуется его изменить, например на "SomeNamespace". | Тогда вы получите доступ к переменным через "SomeNamespace.someVariable". | */ 'js_namespace' => 'window' ];
Использование пакета
В Laravel 5, разумеется, добавьте use JavaScript; в начало вашего контроллера.
public function index() < JavaScript::put([ 'foo' =>'bar', 'user' => User::first(), 'age' => 29 ]); return View::make('hello'); >
Как вы можете видеть в вышеприведенном коде, я передал три типа переменных: первая — строка, вторая — объект,
а третья — число. И, на стороне javascript я тоже хочу, чтобы эти переменные были в соответствии с их типами.
console.log(foo); // bar console.log(user); // User Obj console.log(age); // 29
Как вы можете видеть ниже результаты моей консоли — эти переменные доступны и все их типы соответствуют нужным.

Наш Телеграм-канал — следите за новостями о Laravel.
Задать вопросы по урокам можно на нашем форуме.
Как использовать переменную в регулярном выражении в PHP/JavaScript?
Не так давно мы рассмотрели с вами способы поиска совпадения участков текста в строке на различных языках программирования.
Сегодня же мы рассмотрим случай, когда в регулярном выражении используется не слово, а некая переменная.
Как использовать переменную в регулярном выражении в PHP?
В PHP поставленная задача решается простыми кавычками. И если раньше мы осуществляли поиск по регулярному выражению так:
То теперь мы можем использовать и переменную как необходимое слово для поиска:
Все очень просто.
Как использовать переменную в регулярном выражении в JavaScript?
В JavaScript, к сожалению, способ с кавычками не проходит, и для того, чтобы в этом языке программирования использовать переменную в регулярном выражении, вам необходимо использовать следующую хитрость:
var word = "World"; var pattern = new RegExp(word, "i");
И, соответственно, пример ее использования:
В таком случае вы можете использовать переменную в регулярном выражении и совершать с ней необходимые действия.
Как передать переменную js в этом файле в переменную php в этом же файле
Как передать переменную js в этом файле в переменную php в этом же файле.
P.S. разделить код на отдельные файлы html, js и php нет никакой возможности.
Когда начинает работать JS, к этому моменту PHP уже полностью завершил работу.
Но, если нужно что-то обработать на PHP после того, как загрузилась страница, можно из JS через стандартный HTTP протокол обратиться к серверу и передать туда необходимую информацию. Это можно делать даже без перезагрузки страницы, используя AJAX.
А по основам почитайте, пожалуйста, Самые основы. Как работает PHP.
Да, они у вас в одном файле, НО PHP исполняется на сервере и посылает страницу в браузер.
А браузер уже исполняет яваскрипты и обрабатывает действия пользователя мышкой (как вы пишете «выбираем из тега select имя»).
Если надо из браузера сделать яваскриптом запрос к PHP, надо использовать Ajax-запросы, как написал выше OmegaBerkut. Только new XMLHttpRequest() не кроссбраузерно, я бы задействовал jquery и не парился.
То, что у вас PHP и JS в одном файле — не смертельно, просто неудобно. Делаете на ajax POST или GET запрос к вашему PHP-скрипту и получаете от него нужные данные.
Вот пример куска PHP кода, который при POST-запросе к index.php и отправке tic=30&id=3 будет перезаписывать значение в БД:
if (isset($_POST['tic'])) // Это прислан Аякс-запрос на перезапись значения ТИЦ $tic = (int)$_POST['tic']; $id = (int)$_POST['id']; mysql_query("UPDATE `".DomainTBL."` SET `tic`='' WHERE "); echo "$id:$tic"; // Послать ответ яваскрипту в браузер exit; // Завершить работу скрипта > // Дальше идет ваш остальной PHP-код, он исполнится, если не будет POST-запроса с параметрами tic=30&id=3 . . .
Вот пример яваскрипта, который при клике на кнопку «отправить» не отправляет форму, а делает аякс-отправку данных. Страница не перезагружается, а на месте hrml-формы выводится ответ PHP-скрипта:
script type='text/javascript'> $('.tic').on('submit', function(e) < e.preventDefault();// Отменяем отправку формы //var data = $(e.delegateTarget).attr('data');// Содержимое атрибута data кликнутой td var form = $(this);// Форма, на которой возникло событие $.ajax(< url: form.attr('action'), type: form.attr('method'), data: form.serialize(), success: function(result) // В ответ присылается 'ID:ТИЦ' if (result.match(/\d+:\d+/) == null) alert('сбой: ' + result); else form.parent().html(result);// Выводим ответ PHP-скрипта на месте html-формы >, dataType: 'html', statusCode: < 404: function() < alert(form.attr('action') + ' - страница не найдена'); > >, fail: function(XHR, err, errorThrown) < alert(err); >>); >); script>
Можете разместить их в одном файле, у меня именно так и сделано.
Похожие статьи
- Общая память для двух переменных
- Передача значения переменной из одной формы в другую
- Процедура, как переменная
- Получить значение переменной из одной формы в другой
- Пронумеровать те позиции для которых значение ДА начиная с указанной (Del) позиции
- Как получить определенный символ из переменной зная его номер в последовательности символов?
- Как создать переменную и использовать ее из буфера обмена
- Как передать переменную из get запроса в javascript?
