6

次のコードを使用して、cssファイルをアセットに公開しています。

Yii::app()->clientScript->registerCssFile( Yii::app()->assetManager->publish( Yii::getPathOfAlias('application').'/../css/combo-autocomplete.css' ));

これはcssを正常に登録し、スタイルは正常に機能していますが、次のcssクラスは画像を使用しています。

.ui-icon {
   background-image: url(../images/down-arrow.png); 
}

ロードされていません。アセットフォルダ内のパスが参照されます。中の画像を探しています

ルート/アセット/画像/

現在、画像をアセットとして登録していないため、cssの画像URLを元のパスにリダイレクトする方法はありますか?

ルート/画像

4

1 に答える 1

11

Yiiのアセットマネージャーは、UIウィジェットなどのコンポーネントを自己完結型の方法でパッケージ化できるように設計されています(アプリケーションディレクトリ構造内のさまざまな場所にさまざまなファイルを手動で配布することもできます)。したがって、コンポーネントからアセットとして何かを公開することが理にかなっている場合は、すべてをアセットとして公開することが理にかなっています。

その場合、コンポーネントを次のように構造化する必要があります。

component/
    assets/
        css/
        images/
        js/

次に、assets/ファイルを1つずつ公開するのではなく、Yiiのアセットマネージャーを使用してディレクトリ全体を公開します。これを行うと、次のような方法で公開されることになります。

assets/
    random_hash/
        css/
        images/

CSSはurl(../images/image.jpg)、の値を知らなくても、で画像を簡単に参照できますrandom_hash

于 2012-10-18T12:33:15.843 に答える