問題タブ [assetic]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - Symfony2のCSSファイルのアセットのパス
問題
いくつかのパス(画像、フォントなど)を含むCSSurl(..)
ファイルがあります。
私のパス構造は次のようになります。
スタイルシートで自分の画像を参照したい。
最初の解決策
CSSファイルのすべてのパスを絶対パスに変更しました。アプリケーションもサブディレクトリで動作する必要があるため、これは解決策ではありません。
2番目の解決策
Asseticを。で使用しfilter="cssrewrite"
ます。
そこで、CSSファイルのすべてのパスを次のように変更しました
リソースディレクトリからディレクトリへの実際のパスを表し/web/images
ます。cssrewriteは次のコードを生成するため、これは機能しません。
これは明らかに間違った道です。
assetic:dump
このパスが作成された後、それはまだ間違っています:
Asseticの小枝コード:
現在の(3番目の)ソリューション
すべてのCSSファイルがで終わるので、CSSファイル/web/css/stylexyz.css
のすべてのパスを相対パスに変更しました。
この(悪い)解決策は、環境を除いて機能しdev
ます。CSSパスは/app_dev.php/css/stylexyz.css
であり、したがって、これから生じるイメージパスは/app_dev.php/images/myimage.png
であり、結果として。になりNotFoundHttpException
ます。
より優れた実用的なソリューションはありますか?
php - アセットを使用して相対画像を提供する
symfony2アセットバンドルを理解しようとしています。独自のcssファイルを使用するjqueryプラグインを使用しようとしています。私はすべてを入れてからmybundle/Resources/public
、images /javascript/とcss/に分割しました
プラグインcssは、相対パスを使用して次のような画像を取得しています../images/sprite.png
アセットを使用してcssファイルを提供します。
アセットによって生成されるパスは/app_dev.php/css/mycss.css
です。これは正しいと思います。明らかに、相対的な画像パスはもう機能していません。ファイル自体はmybundle/Resources / publicにあり、/images/にはないためです。
cssrewriteフィルターを使用しようとすると、パスは次のように書き換えられます
http://server.com/Resources/public/images/sprite.png
。しかし、これは正しくありません。ファイルはそこにありません。
アセットを使用して相対的な画像を提供するにはどうすればよいですか?
windows - Assetic + sass を Windows で Symfony2 と連携させるには?
css ファイルに sass を使用するために、Symfony 2.0.11 内で Assetic を実行しようとしています。
私は何時間もその問題をいじっていましたが、私が集めたものから、現在の資産バージョン (1.0.2) は台無しになっており、Windows では動作しません。
assetic と asseticBundle を github から最新のマスター バージョンに更新しようとしましたが、Symfony 2.1 が必要で、多くの変更が加えられ、後方互換性がありません (言うまでもなく、公式にリリースされていないことも言うまでもありません)。
Windows でのこの投稿symfony2 assetics yui コンプレッサー (パス構文)は、この問題に関する良い洞察を提供しますが、残念ながら、それが推奨する資産ライブラリの変更は、私の環境で適切に動作させるには十分ではありません。
https://github.com/kriswallsmith/assetic/commit/5621cd449b0d85316e5872d672e7e900edc2246cとhttps://github.com/kriswallsmith/assetic/issues/25でも興味深いビットを見つけました
最後に、私が知っていることは、vendor/assetic/src/Assetic/Util/ProcessBuilder.php、おそらくパッケージ内の他のファイルを変更し、おそらくconfig.ymlファイルにいくつかの情報を追加する必要があるということです(追加しているようです) java または sass へのパスが役立つ場合があります)。
私が必要としているのは、機能する構成を取得して、私が欠けているもの、または理想的にはその気の毒なことを機能させるために必要な手順を教えてくれる人です。
誰でもその仕事をすることができますか?
_____更新: まだ掘り下げています。まだ 3 日しか経っていません :/
新しい要素:
1/ php5.3.8 では、 https : //bugs.php.net/bug.php?id=60120 に従って proc_open とデータ > 2048 バイトに 問題がある可能性があります。 //github.com/symfony/symfony/issues/3216 )。「git config --global core.autocrlf input」を発行し、git からすべてを再フェッチすると、クラッシュすることなく php5.3.10 を使用できました。
2/ https://github.com/kriswallsmith/assetic/commit/5621cd449b0d85316e5872d672e7e900edc2246cはまともな基盤のように見えます。Process.php のパスに若干の変更を加えましたが ( https://github.com/kriswallsmith/assetic/issues/92を参照)、それが適切かどうかはわかりません。とにかく、この時点で Assetic から取得したコマンド ラインはシェルで動作し、期待される CSS を出力します。
3/ sass.bat (Ruby193\bin にあります) には、さらに先に進むために ruby.exe への絶対パスが必要です (難しい方法で、var_dump してスクリプトを強制終了した場合にのみエラー メッセージが表示されることを学びました)。正しい場所!)
さて、状況は少し良くなったように見えますが、まだ sass で動作していません (他のフィルターでは問題なく動作すると思います)。Process.php (172 行目あたり) の "$data = fread($パイプ、8192);" : $pipe が 2 番目のリソースを指している状態で、この場所でスクリプトが 2 回目に渡されると、スクリプトは返されません...そして、php がスタックし、非常に苦労します (少なくとも 2 回 wamp を強制終了/再起動する必要があります)。別のテストを行うことができます)
私は proc_open とストリームにあまり詳しくなく、そこでコードが何をしようとしているのかを理解するのに苦労しています...
これが、物事を機能させようとする次の人に役立ち、最終的には私のケースにも役立つことを願っています. この問題に関するサポートをまだ探しています!
_____アップデート:
さらにテストを行った結果、sass ファイルが十分に小さい場合に「php app/console assetic:dump」が機能する可能性があることがわかりました。実際の css ルール (変数定義と mixin を除く) は、php5.3.10 では 4096 バイト未満、php 5.3.8 ではさらに小さくする必要があるようです。これは、https://bugs.php.net/bug.php?id=60120およびhttps://bugs.php.net/bug.php?id=51800で説明されている proc_open バグを指しています。
_____アップデート:
問題が修正されているかどうかを確認するためにphp5.4をインストールしようとしました。このバージョンが自分のコンピューターで動作しない理由は、x64 ビルドがまだないためであることに気付くまでに少し時間がかかりました。次に、32 ビット バージョンの wamp をインストールし、php5.4 で簡単に動作するようにしました。最終結果:proc_openはまだハングしています:(私はここでアイデアがなくなり始めています...
チュートリアル:
それで、最終的に私はこれを機能させ、後の視聴者のために最も重要なステップを要約しようと思いました:
1. Ruby 1.9.3 と compass 0.12 をインストールする
http://rubyinstaller.org/downloads/を確認してください
コンパスを 0.12 に更新します
その後
2. compass で compiler.rb を変更する
10 行目の Ruby193\lib\ruby\gems\1.9.1\gems\compass-0.12.0\lib\compass に移動し、
と
/!\ いくつかのセットアップでは、逆になる可能性がありますが、説明しようとしているセットアップでは、このようになります。
3. Assetic を symfony 2.0.11 で動作する最新バージョンにポイントします。
次のように deps ファイルを編集します。
/!\ deps.lock ファイル内の特定のバージョンへの参照も削除する必要があります。
「php bin/vendors install」を発行します。
4. config.yml を変更します
これが私の今の様子です:
5. compass.bat/sass.bat で絶対パスを使用する
Ruby193\bin ディレクトリに移動し、compass.bat を編集して ruby.exe への絶対パスを設定します (sass.bat で同じ操作を行います)。
6. テンプレート内の呼び出しを変更する
これが私の今の様子です:
テスト:
テストには、使用できます
そうすれば、私が行ったように無限ループに陥った場合、ctrl + C だけで済みます。これにより、ブラウザーよりもテストが効率的になります。
/!\ 必ず --no-debug を使用する必要があります。そうしないと、css に次のような不要な行がたくさんできてしまいます。
使用できます
の実行方法で
現在のコマンド ラインを表示し、テストします。
私は現在、次のようになっています。
次に、cli に「php app/console assetic:dump --no-debug」と入力して、web\css に css ファイルを作成し、サイトのページを更新するだけです。えっと…ほら!(うまくいけば!)
注: お気づきかもしれませんが、私は SassFilter の代わりに CompassFilter を使用しています。これは、同じこと (およびそれ以上) を実行し、実際に期待どおりのことを実行できるためです。誰かが SassFilter を修正する方法を見つけることができれば、それはうねりです。その間、私はすでにこれにあまりにも多くの時間を費やしました。
私はその狂気に何日も髪を引っ張ってきました。この投稿が他の人のメンタルヘルスに役立つことを願っています;)
symfony - アセットの「フィルター」構文を修正しますか?
'filter = ...'パラメータを配置する正しい場所はどこですか?
参照されているファイルの前/後/間で見たことがありますが、場所に違いがあるかどうかはわかりません。
{% stylesheets ... %}
さらに、1つのセクション内の異なるファイルに異なるフィルターを適用することは可能ですか?たとえば、「xxx」を両方のファイルに適用するには、「yyy」はa.cssにのみ適用され、「zzz」はb.cssにのみ適用されます。
php - Assetic AssetFactory::createAsset(array $input, ...) - $input は \Assetic\Asset\* 要素を受け入れません
多くの CSS アセットを 1 つに結合し、それらを縮小して、"/assetic/6bad22c.css" のような生成されたファイル名にダンプ (キャッシュ) する方法がいくつかあります。私は以下を利用してこれを達成します:
現在、私は AssetFactory を使用しています
を介してアセットを作成します
参照されるメソッドは次のとおりです。
これまでのところ魔法はありません。私の問題は、定義self::$stylesheets
により、配列にはアセットへのパス文字列だけが含まれていることです。しかし、次のように実際の Assetic Assets を使用する必要があります。
ただしAssetFactory::createAsset()
、独自のアセットは受け入れません。StringAsset
CSS / JS、サーバーサイドでいくつかの値を変更する必要があるため、使用できる可能性が必要です。
を使用する以外にこれを達成する別の方法はありAssetFactory::createAsset()
ますか?
symfony - これらのアセットを Symfony2 で組み合わせる方法は?
私はExposeTranslationBundle (翻訳を JavaScript に公開する) とJMSI18nRoutingBundle (ルートを JavaScript に公開する) を使用しています。これは私の<head>
タグの一部です:
最後の 2 つの<script>
インポートを最初の資産に結合することは可能ですか?
css - Symfony 2 Assetic プロジェクトのレイアウトとリソース管理
私は現在取り組んでいる Web サイトを symfony フレームワークを使用するように適応させようとしていますが、Web 開発に関してはかなり初心者で、たくさんの質問があります。
- すべてのリソースを正しくロードするのに非常に苦労しています。私は資産を使用しようとしていますが、何を試しても、ページをロードすると何百もの 404 が見つからないという応答が返されます。私の現在のディレクトリ構造は以下のとおりです。
- シンフォニー
- ソース
- CS4750
- フォトチャレンジバンドル
- コントローラ
- 資力
- 構成
- 公衆
- CSS
- 画像
- js
- ライブラリ
- LibraryX
- CSS
- 画像
- js
- ビュー
私が今抱えている最大の問題は、css ファイル内の画像です。使ってみました
しかし、最初にアセットを実行せずに試したhttp://localhost/Symfony/web/Resources/public/img/*
代わりに 、すべてのパスが指しています。それから web をインストールしてから実行しますが、どちらも違いはないようです。http://localhost/Symfony/web/bundles/cs4750photochallenge/img
誰かが私がこれを乗り越えるのを手伝ってくれたら、それは素晴らしいことです.
私が抱えている別の問題は、2 つの追加の css ファイルをインポートする css ファイルにあります。ページが読み込まれると、追加の css ファイルも 404 応答を返します。
asset:install と asset:dump の違いは何ですか
また、js ファイルの 1 つがサーバー エラー 500 を返していますが、正常に動作しているように見える残りの js ファイルと同じように対処しています。
上記の質問のいずれかへの回答、または関連するウェブサイト/投稿へのリンクをいただければ幸いです。私はインターウェブを何時間も掘り下げてきましたが、実際には何の進歩もありません. プロジェクトのレイアウトをより詳細に投稿してコーディングしたり、説明したりする必要がある場合はお知らせください。
より詳しい情報:
Config_dev.yml:
テンプレート:
php - Assetic Dump エラー: facebook cURL
私は Symfony2 を実行しており、Facebook 接続を処理するために FOSFacebookBundle をインストールしました。しかし、このバンドルをインストールした後、私はできません
このエラーがスローされるため、もう。
確認したところ、cURL 拡張機能が PHP にインストールされています (.ini ファイルにあり、Facebook 接続も Web サイトで機能しますが、上記のコマンドを実行しようとすると、コンソールにこのエラーが引き続き表示されます)。
この問題を解決するにはどうすればよいですか?
symfony - ユーザープラグインへの呼び出しをトリガーせずにSmartyテンプレートを解析します
Asseticをサポートするために(Symfony2)SmartyBundle拡張機能を書いています。
スタイルシート機能をサポートするために、次のブロックプラグインを登録しましたstylesheets
:
このプラグインは適切に呼び出され、Symfony/asseticキャッシュが作成されるとすべてが期待どおりに機能します。
この問題は、Symfonyキャッシュが空で、Asseticがすべてのテンプレートファイルリソースをロードし、スタイルシートタグで見つかったトークンを使用してPHP配列を取得するようにテンプレートエンジンに要求した場合に発生します。配列を取得するために呼び出されるクラスはですSmartyFormulaLoader
。
$smarty->fetch()
メソッドでが呼び出されると、load()
例外がスローされますSymfony\Component\Config\Exception\FileLoaderImportCircularReferenceException: Circular reference detected in "." ("." > ".")
。
これは、Smartyテンプレートが解析/コンパイルされ、stylesheets
プラグインが再度呼び出されたことが原因です。
そこで、Smartyが(スタイルシートプラグインを呼び出さずに)ブロック関数トークンを抽出するテンプレートパーサーを提供して、Asseticにフィードできるかどうかを尋ねています。または、これを解決するために私が見逃している可能性のある他の解決策。
ありがとう。
symfony - Symfony2:アセットが deps で 2 回宣言されました
Symfony を 2.0.12 バージョンにアップグレードしました。deps ファイルをざっと見てみると、Assetic が 2 回宣言されていて、2 つの異なるバージョンであることがわかりました。
と
何故ですか ?何か特別な理由があるのですか、それとも見落としですか?