11

いくつかのファイルがあるバンドル用のカスタム リソース ディレクトリがあります。

/longpathtoSymfony/src/MyOwn/Bundle/MyOwnBundle/Resources/public
|-- bootstrap
|   |-- css
|   |   |-- bootstrap-theme.css
|   |   |-- bootstrap-theme.min.css
|   |   |-- bootstrap.css
|   |   |-- bootstrap.min.css
|   |   `-- carousel.css
|   |-- fonts
|   |   |-- glyphicons-halflings-regular.eot
|   |   |-- glyphicons-halflings-regular.svg
|   |   |-- glyphicons-halflings-regular.ttf
|   |   `-- glyphicons-halflings-regular.woff
|   `-- js
|       |-- bootstrap.js
|       |-- bootstrap.min.js
|       |-- holder.js
|       `-- respond.min.js
|-- css
|   `-- custom.css
|-- fonts
|   |-- glyphicons-halflings-regular.svg
|   |-- glyphicons-halflings-regular.ttf
|   `-- glyphicons-halflings-regular.woff
|-- images
|-- img
`-- js
    |-- html5shiv.js
    |-- jquery-1.10.2.min.map
    |-- jquery.js
    `-- less-1.3.3.min.js

また、すべての js ファイルと css ファイルがパブリック フォルダーに正しく配置されているbootstrap/css/xxx.cssため、フォント ファイルを除くファイルなどにアクセスできます。

webそれらをディレクトリにコピーするために何をすべきかわかりません。試してみるとphp app/console assetic:dump、css ファイルと js ファイルのみがコピーされます。

php app/console assetic:dump
Dumping all dev assets.
Debug mode is on.

18:41:17 [file+] /longpathToSymfony/app/../web/css/bef717e.css
18:41:17 [file+] /longpathToSymfony/app/../web/css/bef717e_bootstrap.min_1.css
18:41:17 [file+] /longpathToSymfony/app/../web/js/6f9045a.js
18:41:17 [file+] /longpathToSymfony/app/../web/js/6f9045a_html5shiv_1.js
18:41:17 [file+] /longpathToSymfony/app/../web/js/6f9045a_respond.min_2.js
18:41:17 [file+] /longpathToSymfony/app/../web/css/0c1e28e.css
18:41:17 [file+] /longpathToSymfony/app/../web/css/0c1e28e_carousel_1.css
18:41:17 [file+] /longpathToSymfony/app/../web/js/0aa0509.js
18:41:17 [file+] /longpathToSymfony/app/../web/js/0aa0509_jquery_1.js
18:41:17 [file+] /longpathToSymfony/app/../web/js/0aa0509_bootstrap.min_2.js
18:41:17 [file+] /longpathToSymfony/app/../web/js/0aa0509_holder_3.js
18:41:17 [file+] /longpathToSymfony/app/../web/js/0aa0509_less-1.3.3.min_4.js

フォントファイルも含めるにはどうすればよいですか? jquery-1.10.2.min.map動的にダウンロードされる で同じ問題が発生しています。symfony に「一部のコンポーネントが必要なので、Web リソース フォルダに入れてください」と言う方法はありますか?

4

4 に答える 4

18

私は同じ問題を抱えていたので、回避策として次のことを試してみました。これまでのところうまくいくようです。

{% stylesheets
    output='assets/fonts/glyphicons-halflings-regular.ttf'
    'bundles/bootstrap/fonts/glyphicons-halflings-regular.ttf'
%}{% endstylesheets %}

テンプレートに何も表示されないことを意味する出力の省略に注意してください。実行するとassetic:dump、ファイルが目的の場所にコピーされ、css インクルードが期待どおりに機能します。

于 2013-10-18T22:05:26.780 に答える
9

小枝では、次のような javascripts ブロックが必要です。

{% block javascripts %}
    {% javascripts
        'bundles/myown/bootstrap/js/bootstrap.js'
        'bundles/myown/bootstrap/js/respond.js'
        'bundles/myown/js/*'
    %}
    <script src="{{ asset_url }}"></script>
    {% endjavascripts %}
{% endblock %}

css についても同様です。

{% block stylesheets %}
    {% stylesheets
        'bundles/myown/bootstrap/css/bootstrap-theme.css'
        'bundles/myown/css/*'
        filter='cssrewrite'
    %}
    <link rel="stylesheet" href="{{ asset_url }}">
    {% endstylesheets %}
{% endblock %}

これらのアセットを簡単に開発できるように (app_dev.php)、次のようにインストールできます。

php app/console cache:clear --env=dev
php app/console assets:install web --symlink

この時点で、/longpathtoSymfony/web/bundles/myown にシンボリック リンク フォルダーが表示され、バンドル リソースにリンクされているはずです。symlink オプションの利点は、bundle フォルダー内のスクリプトを変更できることです。これらの変更をブラウザーで確認するために assets:install コマンドを実行する必要はありません。リフレッシュするだけです。

本番環境に移行する準備ができたら、assetic:dump コマンドを使用します。これは、css、js、および画像でのみ機能します。そのため、フォント フォルダーを Web ディレクトリに手動で移動するか、独自のスクリプトを記述してそのフォルダーを移動する必要があります。

config.yml で Assetic にバンドルについて知らせてください。

assetic:
    bundles:        [ 'MyOwnBundle' ]

これで、次のコマンドを使用して本番環境のアセットをダンプできます。

php app/console cache:clear --env=prod
php app/console assetic:dump --env=prod

そのため、ブラウザーでチェックアウトするときに app_dev.php を削除するだけで、web/css および web/js フォルダーにダンプされた単一のファイルから css と javascript が読み込まれます。これはこれらのツールを使用するための 1 つのアプローチにすぎませんが、ほとんどの場合はうまくいくようです。

于 2013-10-05T17:00:46.817 に答える
0
  1. php app/console assets:install target [--symlink]コマンドでアセットをインストールする

  2. asset()twig 関数を使用してフォント ファイルにアクセスします。

    asset('bundles/myown/fonts/glyphicons-halflings-regular.ttf')

*アセット機能のパスを確認します

于 2013-09-23T18:42:34.117 に答える
0

回答の一部はここから取得されました

js、css、およびフォントのアセットパスを設定する方法

{% stylesheets
    '@bootstrap_css'#this is some custom or bundled files which you want to include
    'bundles/mybundle/css/custom.css'
    filter="cssrewrite"
    output='some/path/to.css'
%}

この部分は、1 つのファイルに示されているすべての css をビルドし、コード サンプルにも示されているパスに配置します。これで to.css が配置されます/web/some/path/to.css

同じことがJSの場合です:

{% javascripts
    '@jquery' #this is some custom or bundled files which you want to include
    '@bootstrap_js'
    'bundles/fosjsrouting/js/router.js'
    output='js/compiled/app.js'
%}

これで、パスを含む 1 つのファイルにビルドされるすべての js が作成されます/web/js/compiled/app.js

FY : symfony Assetic バンドルの最新バージョンでは、ボックスから存在しません。composer require symfony/assetic-bundle

于 2016-12-07T20:45:23.783 に答える