use_javascriptのオプション
symfonyのビューでJavaScriptファイルを動的に追加指定する場合、「use_javascript」ヘルパー関数を使います。
このヘルパー関数の3番目の引数でいくつかオプションを指定できます。
どういったオプションがあるのかは、実際にオプションが使われる「include_javascripts」ヘルパー関数のソースを見ると分かります。
include_javascripts() → get_javascripts() → javascript_include_tag() と呼び出されており、javascript_include_tag() で実際の処理が行われています。
rev. 24289
<?php 99 function javascript_include_tag() 100 { 101 $sources = func_get_args(); 102 $sourceOptions = (func_num_args() > 1 && is_array($sources[func_num_args() - 1])) ? array_pop($sources) : array(); 103 104 $html = ''; 105 foreach ($sources as $source) 106 { 107 $absolute = false; 108 if (isset($sourceOptions['absolute'])) 109 { 110 unset($sourceOptions['absolute']); 111 $absolute = true; 112 } 113 114 $condition = null; 115 if (isset($sourceOptions['condition'])) 116 { 117 $condition = $sourceOptions['condition']; 118 unset($sourceOptions['condition']); 119 } 120 121 if (!isset($sourceOptions['raw_name'])) 122 { 123 $source = javascript_path($source, $absolute); 124 } 125 else 126 { 127 unset($sourceOptions['raw_name']); 128 } 129 130 $options = array_merge(array('type' => 'text/javascript', 'src' => $source), $sourceOptions); 131 $tag = content_tag('script', '', $options); 132 133 if (null !== $condition) 134 { 135 $tag = comment_as_conditional($condition, $tag); 136 } 137 138 $html .= $tag."\n"; 139 } 140 141 return $html; 142 }
このソースを見ると、オプションには以下のものがあります。
- absolute : trueにすると、絶対URL(httpから始まる)を使ったタグが生成されます
- condition : 何か指定すると、指定した文字列を使ったコメントタグで囲まれます
- raw_name : trueにすると、use_javascriptの最初の引数に指定したパスがそのまま使われます
ページによって指定するJavaScriptを使い分けたい場合、JavaScriptを格納しているフォルダがフロントコントローラー配下のjsディレクトリ以外にある場合、外部JavaScriptを読み込みたい場合などは、raw_nameをtrueにすればOKですね。