Yii2:具有高级配置的通用资产

Lar*_*yTX 10 php assets yii2

我想使用Yii2的高级配置与单独的前端,后端,通用和控制台应用程序.我有许多常见资产,包括样式表,js文件和将在前端和后端应用程序中使用的字体.然后将这些资产放在一个共同的资产文件夹中才有意义.

然后,我的quandry开始了.似乎我需要一个单独的AppAsset.php文件来管理整个应用程序的前端和后端部分中的资产,因为两者之间的某些东西会有所不同.(我不确定是将前端,后端等作为总体内容中的单独应用程序引用,还是将它们称为大型总体应用程序的子应用程序.)无论如何,似乎我需要两个AppAsset管理器.我将自己处理所有文件转换(例如scss→css)和文件压缩,因此我无需配置资产管理器来执行此操作.

遗憾的是,AppAsset有关如何在捆绑包中包含特定文件或目录的文档和资产包并不清楚.我看到的唯一的事情就是如何使用指定的目的地$css,$js,变量.对于输入目录,我只看到$ sourcePath.这是否意味着我必须$sourcePath为每个单独的javascript,css,image等文件创建一个单独的包(和).这是很多捆绑!当然有一些方法可以在一个包中包含多个资产文件.有人能告诉我怎么样?

Sch*_*bel 2

嗯,我相信“捆绑包”的目的是让您挑选您想要的文件。

您不需要为每个单独的文件制作不同的包。

例如,在我的超级简单的自定义 AssetManager 中,我有这个:

namespace frontend\assets;
use yii\web\AssetBundle;
use yii\web\YiiAsset;

class CustomAsset extends AssetBundle{
    public $basePath = '@webroot';
    public $baseUrl = '@web';
    public $css = [
        'css/custom.css',
        'css/custom_modals.css'
    ];
}
Run Code Online (Sandbox Code Playgroud)

由于这两个 CSSfolders/files位于我的项目的前端部分,并且 CustomAsset 也位于那里,因此当我注册此 AssetManager 时,它将遍历数组$css并将它们添加到标题部分。$js如果需要,它对您要添加的数组执行相同的操作。另外,请记住,这些文件需要位于可通过 Web 访问的文件夹中。

  • 是的,我最初的问题出现在 Yii2 的早期,当时文档非常差。它已经有所改进,但 AssetManager 上的文档仍然很差。不过,我已经想通了。顺便说一句,您的资源不应位于可通过 Web 访问的文件夹中。AssetManager 会自动将它们发布(复制)到项目中的 /web/assets 文件夹中。实际上,我将原始资源与 Asset.php 文件一起保存在 frontent\assets 中。 (4认同)