« IE9がJSON最後のカンマを認めたようだ | トップページ | 「プログラマー向けIME自動確定制御」とか »

2012.01.20

[symfony] javascriptの読み込み位置(use_javascript と include_javascripts)

Symfonyのテンプレートで外部javascriptを読み込むときは、 use_javascript という組み込みのヘルパーを使えって?それはえらいすんません。でもね、scriptタグで読み込んでる時はちゃんと動いていたんだけれど、use_javascript 使ったら、動かなくなったってーこれはどういうこっちゃろうか?

具体的には、併用しているはずのjQueryがありませんよというエラーが発生。

どうやら取り込み位置がおかしいようだ。HEADを覗くとjQueryより前に依存しているスクリプトが取り込まれている。確かにこれでは動かないが、どうしてこうなるのか?

use_javascriptで検索してみると、Symfonyのチュートリアルの4日目がヒット。読んでみたら、use_javascript とは別に、include_javascripts というヘルパーがあって、なぜかはっきりと書かれていないけど、use_javascript ヘルパーでスクリプトを読み込む位置を指定するみたい。多分これやなと。

ていうか、組み込みのヘルパーのリファレンスって、なんで検索で出てこない?存在しないのかな。チュートリアルを悠々とやっている時間は無いのだと何度言ったら(Ry

ということで、templates/layout.phpを盛大に開いてみると、jQueryはscriptタグでベタに取り込んであって、案の定それよりも前に include_javascripts が置かれていた。

<head>
<?php include_javascripts() ?>
<script
    src="/jquery-ui/js/jquery-1.3.2.min.js"
    type="text/javascript"></script>
</head>

チュートリアルには「パフォーマンスの問題からbodyの閉じタグの直前に include_javascripts を置いておくとよい」と書いてあるけど、関わっているのが途中参加のそれなりに大きい業務システムで、他に影響が出ると責任持てないから、headの閉じタグ直前へ移動。

<head>
<script
    src="/jquery-ui/js/jquery-1.3.2.min.js"
    type="text/javascript"></script>
<?php include_javascripts() ?>
</head>

結果、use_javascript でも正常動作するようになりました。でも本来は以下のようにするべきなんだろうな。

<head>
<?php include_javascripts() ?>
<?php use_javascript('/jquery-ui/js/jquery-1.3.2.min.js')" ?>
</head>

↑こうしておけば問題なかったはずだけど、前任者さんはそんなヘルパーは知らなかったんだろう。他でも use_javascript は一つも使われていなかった。

同じ懸念はCSSでもある(use_stylesheet と include_stylesheets)のだけど、適用されるスタイルの優先順位が逆になるだけですし、妙に見た目がおかしくなっても困るから、とりあえず放置。

« IE9がJSON最後のカンマを認めたようだ | トップページ | 「プログラマー向けIME自動確定制御」とか »

プログラミング」カテゴリの記事

php」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: [symfony] javascriptの読み込み位置(use_javascript と include_javascripts):

« IE9がJSON最後のカンマを認めたようだ | トップページ | 「プログラマー向けIME自動確定制御」とか »

2019年5月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
フォト

Google AdSense

銀の弾丸

無料ブログはココログ

他のアカウント