2012-03-28 9 views
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プラグインは機能しません。

私は間違っていますか?

答えて

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'); 
+0

これは私が最初に持っていたものですが、すべてのCSSが最初に来てからすべてJSになったので、すべてを$ this-> fetch( 'script');に入れるのは本当に好きでした。いくつかのCSSではなく、次にいくつかのJS、いくつかのCSSなど.. – 472084

+0

CSSとスクリプトは異なるブロックにありませんか?とにかくそれらをブロックに割り当てることはできないのですか? http://book.cakephp.org/2.0/en/views.html#using-blocks-for-script-and-css-files – jeremyharris

+0

私の意図は、インラインCSSをビューに表示すると、JSの下に表示されますレイアウトでは、私はすべてのCSSを最初に維持しようとしています---ブロックは本当にうまく動作しますが、私が抱えている問題はJSファイルがレイアウト内のJSファイルの前に追加されているためです。プラグインがjQuery呼び出しの上にあるように、各ビュー内のレイアウトと特定のプラグインに追加します。 – 472084

2

あなたの現在のシステムの構築に投資していますが、代わりに標準CakePHPの一つで、hierarchical resource loaderヘルパーを使用して試すことができますどのくらいの時間がわかりません。

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

+0

おかげで、彼らはその順序で解析され、その恥は、そうでない場合は、この問題は存在しなかったでしょう。 – 472084

0

ヘッドセクションでこれを使用してください。

Html->script('jquery-1.11.1.js') ?>
fetch('script') ?>
関連する問題