この場合、JavaScript 変数を PHP コードで埋める特定の Symfony モジュールを使用します。
これを行うには、たとえば「javascript」と呼ばれるモジュールを作成します。このモジュールには単一のアクションが含まれます。このアクションに関連付けられたテンプレートには、次の名前が必要です: ...Success.js.php。
このテンプレートでは、次のように JavaScript 変数を入力できます。
var global = {
misc: {
userCulture : "<?php echo $sf_user->getCulture() ?>",
serverName : "<?php echo $_SERVER["SERVER_NAME"]?>",
},
...
}
次に、*appName*Configuration.class.php (アプリの config フォルダーにあります) に、次のコードを追加する必要があります。
class indexConfiguration extends sfApplicationConfiguration
{
public function configure()
{
$this->dispatcher->connect('context.load_factories', array($this, 'listenToContextLoadFactoriesEvent'));
}
public function listenToContextLoadFactoriesEvent(sfEvent $event)
{
$event->getSubject()->getResponse()->addJavascript($event->getSubject()->getRouting()->generate('javascript_variables'));
}
}
次に、次のルートを routing.yml ファイルに追加する必要があります。
javascript_variables:
url: /*moduleName*/*actionName*.:sf_format
param: { module: *moduleName*, action: *actionName*, sf_format: js }
これで、任意の js ファイルでこれらの JavaScript 変数にアクセスできるようになりました。つまり、次のようになります。
$(document).ready(function() {
alert(global.misc.userCulture);
});