2017-05-15 7 views
1

フロントエンドに/ actions/users/someactionのようなパスがあり、バックエンドからBootstrap-Asset(/ backend/web/assets/xxxxxx /にあります)を使用したい。Yii2カスタムアセットの場所からの位置

は、だから私は、コンテンツを以下で「ActionAsset」と呼ばれる資産を作成:

class ActionAsset extends AssetBundle 
{ 
    public $basePath = '@backend'; 
    public $baseUrl = '@web/backend'; 
    public $css = [ 
     'css/external.css', 
     'css/overwrite-bootstrap.css', 
    ]; 
    public $js = [ 
    ]; 
    public $depends = [ 
     'yii\web\YiiAsset', 
     'yii\bootstrap\BackendBootstrapAsset', 
    ]; 
} 

含まCSSをうまく働いているが、depenciesは常に/ /フロントエンド/ウェブ/資産に保存されます。 この場所を/ backend/web/assetsに変更する方法は私の質問です(実際には数週間は検索しました)。

ありがとうございます!

+0

?フロントエンドまたはバックエンド? –

+0

フロントエンドですが、ActionAssetをバックエンドに切り替えることで違いはありません。 – SlazZe

答えて

0

$sourcePathを定義する必要があります。 Yii2 AssetManagerはあなたの現在のWeb/assets /フォルダにあなたの資産をコピー(またはシンボリックリンク)します。 docs

sourcePathから

:このバンドル内のアセットファイルが含まれているルートディレクトリを指定します。このプロパティは、ルートディレクトリがWebにアクセスできない場合に設定する必要があります。それ以外の場合は、代わりにbasePathプロパティとbaseUrlを設定する必要があります。パスエイリアスはここで使用できます。

そうにコードを変更:

class ActionAsset extends AssetBundle 
{ 
    public $sourcePath = '<path to your asste content>'; 
    public $css = [ 
     'css/external.css', 
     'css/overwrite-bootstrap.css', 
    ]; 
    public $js = [ 
    ]; 
    public $depends = [ 
     'yii\web\YiiAsset', 
     'yii\bootstrap\BackendBootstrapAsset', 
    ]; 
} 

または:ちょうど@frontend/assetであなたのasstetbundleを上書きし、$sourcePathプロパティに応じて設定:使用しているどのような名前スペース

class FrontendActionAsset extends ActionAsset 
{ 
    public $sourcePath = '<path to your asste content>'; //you don't need more 
} 
+0

まあ、私はすでにこれを試しました。 $ sourcePath = '@ backend/web'のようなパスを取った場合、/ backend/webには何も保存されません。フロントエンド/ webにはまだ保存されます。 また、私の普通のCSSはfrontend/web/assets/xxxxxxに保存され、私はそれを望んでいません。 – SlazZe

+0

明確にするには:バックエンドアプリケーションを実行するときには、コンテンツ 'backend/web/*'のみが読み込み可能であるか、読み込み可能であるべきです。フロントエンドアプリケーションを起動する場合は、アプリで必要なすべてのアセットを 'frontend/web/assets'にコピーする必要があります。フロントエンドから 'backend/web/assets'のバックエンド資産にアクセスすべきではありません。あなたのコンテンツを複製したくない場合は、あなたの設定を編集してください: ''components' => ['assetManager' => ['linkAssets' => true]]' またはAssetClassの 'publishOptions'を' [linkAssets '=> true] '。 AssetManagerはアセットをシンボリックリンクします。アセットフォルダを空にしてください。 – Nordseebaer

+0

ありがとう、それは私を大きく助けた。 – SlazZe

関連する問題