Javascriptをヘッダ内で読み込む

例えばViewで

<?php echo $javascript->link('jquery') ?>

ってやると、書いた場所にscriptタグが出てしまいます。これをヘッダの中で読み込みたい場合は、ここに2つの変更を加えます。

<?php echo $javascript->link('jquery', false) ?>

まずは上記のように、linkメソッドに第2引数にfalseを渡します。これはその場に出力するかどうかのフラグで、デフォルトでtrueになってます。

次にレイアウト側を修正します。具体的には$scripts_for_layoutという変数をhead要素内に書き込むことで、scriptタグを出力する場所を指定します。

<?php echo '<?xml version="1.0" encoding="utf-8"?>' . "\n" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <meta http-equiv="Content-Stype-Type" content="text/css" />
  <meta http-equiv="Content-Script-Type" content="text/javascript" />

  <title><?php echo $title_for_layout ?></title>

  <link rel="stylesheet" href="/css/style.css" type="text/css" />

  <?php echo $scripts_for_layout ?>

</head>

これで$scripts_for_layoutを指定した場所に読み込まれるようになります。