5

JSファイルをビューに挿入しようとしていますが、間違った順序で挿入されています。

私のdefault.ctpにはこれがあります

$this->Html->script(array(
    'https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js',
    'global'
), array('inline'=>false));

echo $this->fetch('script');

私の見解では、私はこれを持っています:

$this->Html->script('jquery.fancybox.pack', array('inline' => false));

しかし、ソースを見ると、次のようになります。

<script type="text/javascript" src="/js/jquery.fancybox.pack.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript" src="/js/global.js">

これは明らかに間違った順序であるため、jQueryプラグインは機能していません。

私は何が間違っているのですか?

4

3 に答える 3

6

通常、必要なスクリプトを(バッファーに追加するのではなく)レイアウトにエコーアウトし、その後にスクリプトブロック(バッファー付きスクリプト)をエコーし​​ます。これにより、各ビューに必要なスクリプトが最初にエコーされます。default.ctpは、代わりに次のようになります。

// get echoed immediately
echo $this->Html->script(array(
    'https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js',
    'global'
));
// everything else from the view, echoed after
echo $this->fetch('script');

または、先行するスクリプトに特別なブロックを指定できます。

echo $this->Html->script(array(
    'https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js',
    'global'
), array('block' => 'firstScripts');
echo $this->fetch('css');
echo $this->fetch('firstScripts');
echo $this->fetch('script');
于 2012-03-28T14:15:24.327 に答える
2

現在のシステムの構築にどれだけの時間を費やしたかはわかりませんが、標準のcakePHPヘルパーの代わりに階層型リソースローダーヘルパーを使用してみることができます。

残念ながら、標準のリソースローダーには、異なるファイル間の依存関係を処理する方法がなく、指定した順序でファイルをロードするだけです(ビューはレイアウトの前に解析されます)。

于 2012-03-28T09:28:38.230 に答える
0

ヘッドセクションでこれを使用します。

Html-> script('jquery-1.11.1.js')?>
fetch('script')?>
于 2015-04-29T09:42:54.477 に答える