Я использую настройку MVC и пытаюсь внедрить javascript в свои представления (.php), но разрешаю доступ к javascript ко всем переменным, к которым имеет доступ представление. Моя конечная цель - получить доступ к переменным PHP из моего javascript (например, чтобы я мог alert()
название продукта).
Вот мой поток заявок:
- запуск буфера вывода
- call extract () для связанного массива (содержит данные для моего просмотра)
- вызов на просмотр файла
- вернуть содержимое буфера вывода и очистить буфер
- эхо-буфер
У меня есть функция injectJS()
, которая выглядит следующим образом:
function injectJS($jsFile) {
require APP_DIR . $jsFile;
}
Вот пример Javascript (alert.js), который я хочу добавить:
<script type="text/javascript">
alert("product name: <?php echo $product['name']; ?>");
</script>
Итак, в моем файле просмотра я звоню injectJS('alert.js');
. Он внедряет javascript, но я получаю уведомление PHP о наличии неопределенной переменной $product
при рендеринге представления. Однако, если я пишу оператор require
от руки, все работает нормально. Возможно ли достичь чего-либо с помощью injectJS()
?
Редактировать
Я забыл упомянуть, что я пытался явно передать переменные в injectJS()
, и это работает, но я не хочу всегда передавать переменные. Это может стать грязным и громоздким, если представление должно передавать много переменных в JS. Есть ли способ, которым я мог бы (внутри функции) захватить переменные в рамках скрипта, ответственного за вызов injectJS()
?
Редактировать 2
Если подумать, передача переменных снова не реальная проблема, я думаю, что я просто жадный / ленивый;). Я просто передам переменные при необходимости injectJS()
. Спасибо за ответы