私はMVCセットアップを使用しており、ビュー(.php)にJavaScriptを挿入しようとしていますが、ビューがアクセスできるすべての変数へのJavaScriptアクセスを許可しています。私の最終的な目標は、JavaScriptからPHP変数にアクセスできるようにすることです(たとえばalert()、製品の名前を取得できるようにするため)。
これが私のアプリケーションフローです:
- 出力バッファを開始します
- 連想配列でextract()を呼び出します(これには私のビューのデータが含まれています)
- ビューファイルでrequireを呼び出す
- 出力バッファの内容を返し、バッファをクリアします
- エコーバッファ
私は次のような関数を持って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を挿入し$productますが、ビューをレンダリングすると、未定義の変数があるというPHPの通知が表示されます。しかし、私requireが手でステートメントを書くと、すべてがうまくいきます。使用して達成しようとしていることはinjectJS()可能ですか?
編集
私は変数を明示的にに渡そうとしたことを言及するのを忘れましたinjectJS()、そしてそれは機能します、しかし私は常に変数を渡す必要はありません。ビューが多くの変数をJSに渡す必要がある場合、面倒で面倒になる可能性があります。(関数内で)呼び出しを担当するスクリプトのスコープ内で変数を取得する方法はありますinjectJS()か?
編集2考え直し
てみると、変数を再度渡すことは実際の問題ではありません。私はただ貪欲/怠惰であると思います;)。必要に応じて変数を渡しますinjectJS()。回答ありがとうございます