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ですね。