Assets 如何将文件添加到Yi2中供应商目录中有$sourcePath的资产中?

Assets 如何将文件添加到Yi2中供应商目录中有$sourcePath的资产中?,assets,yii2,Assets,Yii2,我正在制作一个基于JS插件(DataTables)的资产包,该插件已通过composer安装在vendor/目录中。资产包类文件如下所示: <?php namespace app\assets; use yii\web\AssetBundle; class DatatablesAsset extends AssetBundle { public $sourcePath = '@vendor/datatables/datatables/media'; public $c

我正在制作一个基于JS插件(DataTables)的资产包,该插件已通过composer安装在
vendor/
目录中。资产包类文件如下所示:

<?php
namespace app\assets;

use yii\web\AssetBundle;

class DatatablesAsset extends AssetBundle
{
    public $sourcePath = '@vendor/datatables/datatables/media';

    public $css = [
        'css/jquery.dataTables.min.css',
    ];
    public $js = [
        'js/jquery.dataTables.js',
    ];
    public $publishOptions = [
        'forceCopy' => true,
    ];
    public $depends = [
        'yii\web\YiiAsset',
    ];
}
您正在寻找的

<link rel="icon" type="image/ico" href="<?=Yii::$app->assetManager->getPublishedUrl('@vendor/xxxx/yyyyy/assets')?>/xxx/yyy/fav.ico">

您可以使用bundle对象获取带有散列的路径,并附加资产文件夹中文件的相对路径

资产到达某处(
$this
是视图对象):

在视图文件中,您可以使用(包括散列)

baseUrl'/images/image.jpg'?>“>
$js和$css中列出的相对资产文件的基本URL

如果设置了$sourcePath,则此属性将被 yii\web\AssetManager从发布资产文件时 $sourcePath


谢谢你的建议。但是,确切的问题是如何在CSS文件中使用这些图像,即作为背景图像。优雅地使用这些图像有点棘手。@PaulvanSchayck我明白了。至少这是获取和创建路径的一种方法。我会留下答案,因为它可能会帮助其他人做类似的事情。
<link rel="icon" type="image/ico" href="<?=Yii::$app->assetManager->getPublishedUrl('@pachageName/assets')?>/xxx/yyy/fav.ico">
$asset = $this->registerAssetBundle(DatatablesAsset::class);
// or alternatively
$asset = DatatablesAsset::register($this);
<img src="<?= $asset->baseUrl . '/images/image.jpg' ?>">