2

私の Symfony2 アプリケーションでは、Zurb Foundation を使用してレイアウトを構築しています。これは私に頭痛の種を与え続けます... cssはかなりうまく機能しますが、jsはしばしば機能しません。ファイルがロードされ、エラーは報告されません (Zurb は問題なく機能します) が、たとえば、タブをクリックしても何も起こりません。

Assetic を介した基盤ファイルの読み込みでエラーが見つかると思います。フィルターは使用していませんが、app\resources\public からファイルを読み込むには Assetic が必要です。これは Web 以外のフォルダであるため、これらのファイルを直接ロードすると、「禁止」エラーが発生します。

Foundation のグローバル css および js ファイルは、Symfony2 アプリのどこに置いていますか? バンドル内または私のようなパブリック フォルダー内ですか? これをスムーズに実行する方法について何かアドバイスはありますか?

編集:私のZurb Foundation jsはまったく機能していないようです...しかし、エラーなしでロードされました。これに関するドキュメントは、存在するとしても非常にまれです。

4

2 に答える 2

2

あなたがまだよりクリーンな方法を探しているなら、この男は Foundation と jQuery & Modernizr のバンドルを作成するのに十分親切でした.

https://github.com/bmatzner/BmatznerFoundationBundle

必要なのはこれだけです:

<head>
  //...
{% block stylesheets %}
<link href="{{ asset('bundles/bmatznerfoundation/css/foundation.min.css') }}" media="screen, projection" rel="stylesheet"/>
{% endblock %}
<script src="{{ asset('bundles/bmatznerjquery/js/jquery.min.js') }}"></script>
<script src="{{ asset('bundles/bmatznerfoundation/js/foundation.min.js') }}"></script>
</head>
于 2013-08-05T21:44:01.903 に答える
2

「読み込み順序」が答えでした... js ファイルが間違った順序で読み取られ、それが問題の原因でした。

これが解決策です:

js ライブラリにリンクするときは、順序を判断できるように、各ファイルを個別に指定してください。次に、最後の app.js ファイルにリンクします。そうしないと、すべてのファイルが検出され、正しくロードされますが、Zurb Foundation では使用されません。app.js ファイルを見ると、ライブラリがロードされ、見つからないライブラリごとに null が返されることがわかります - その特定の瞬間に。

したがって、次のように js ファイルにリンクする代わりに:

{% javascripts 
 '@UnknownblissZurbfoundationBundle/Resources/public/javascripts/*'
%}
<script src="{{ asset_url }}"></script>
{% endjavascripts %}

次のようにします。

{% javascripts 
 '@UnknownblissZurbfoundationBundle/Resources/public/javascripts/jquery.placeholder.js'
 '@UnknownblissZurbfoundationBundle/Resources/public/javascripts/modernizr.foundation.js'
 '@UnknownblissZurbfoundationBundle/Resources/public/javascripts/foundation.min.js'
 '@UnknownblissZurbfoundationBundle/Resources/public/javascripts/jquery.foundation.accordion.js'
 '@UnknownblissZurbfoundationBundle/Resources/public/javascripts/jquery.foundation.alerts.js'
 '@UnknownblissZurbfoundationBundle/Resources/public/javascripts/jquery.foundation.buttons.js'
 '@UnknownblissZurbfoundationBundle/Resources/public/javascripts/jquery.foundation.forms.js'      '@UnknownblissZurbfoundationBundle/Resources/public/javascripts/jquery.foundation.mediaQueryToggle.js'
 '@UnknownblissZurbfoundationBundle/Resources/public/javascripts/jquery.foundation.navigation.js'
 '@UnknownblissZurbfoundationBundle/Resources/public/javascripts/jquery.foundation.topbar.js'
 '@UnknownblissZurbfoundationBundle/Resources/public/javascripts/jquery.foundation.reveal.js'
 '@UnknownblissZurbfoundationBundle/Resources/public/javascripts/jquery.foundation.tabs.js'
 '@UnknownblissZurbfoundationBundle/Resources/public/javascripts/jquery.foundation.tooltips.js'
 '@UnknownblissZurbfoundationBundle/Resources/public/javascripts/app.js'
 '@UnknownblissZurbfoundationBundle/Resources/public/javascripts/*'
 %}
<script src="{{ asset_url }}"></script>
{% endjavascripts %}

そうすれば、Symfony2 の代わりに読み込み順序を決定できます。それでも、ワイルドカード リンクで終わるのは賢明な考えです。

この方法では、Assetic を使用することで得られる追加の利点がすべて失われているように見えるかもしれませんが、名前空間を使用するという利点があり、フィルターを使用することで、Assetic でこれらのファイルを 1 つにまとめることができます。これにより、必要なリクエストの量が制限されます。したがって、唯一の真の欠点は、追加のコードが必要になることです...

PS 上記で選択した順序は私にとっては問題ありませんでしたが、独自の順序を考え出すこともできます。

于 2013-03-21T13:15:44.787 に答える