加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – assetic – 无法写资产

发布时间:2020-12-13 16:35:57 所属栏目:PHP教程 来源:网络整理
导读:这是我的目录结构(这只是一个测试项目): stan@mypc:/generate_assets$sudo tree -L 3 -p.├── [drwxr-xr-x] assets│ └── [drwxr-xr-x] css│ ├── [-rw-r--r--] test1.css│ └── [-rw-r--r--] test2.css├── [-rw-r--r--] composer.json├──
这是我的目录结构(这只是一个测试项目):
stan@mypc:/generate_assets$sudo tree -L 3 -p
.
├── [drwxr-xr-x]  assets
│ └── [drwxr-xr-x]  css
│     ├── [-rw-r--r--]  test1.css
│     └── [-rw-r--r--]  test2.css
├── [-rw-r--r--]  composer.json
├── [-rw-r--r--]  composer.lock
├── [drwxrwxrwx]  public
├── [-rwxr-xr-x]  run
└── [drwxr-xr-x]  vendor
     ....skipping...

这是我的简单脚本(‘run’文件),它应该生成资产:

#!/usr/bin/env php

<?php
    //loading composer's autoload
    chdir(__DIR__);
    if (file_exists('vendor/autoload.php')) {
        include 'vendor/autoload.php';
    }

    use AsseticAssetAssetCollection;
    use AsseticFactoryAssetFactory;
    use AsseticAssetFileAsset;
    use AsseticAssetGlobAsset;
    use AsseticFilterLessFilter;
    use AsseticFilterCssMinFilter;
    use AsseticAssetWriter;
    use AsseticAssetManager;

    //Asset manager
    $am = new AssetManager();

    //Add all css files
    $css = new GlobAsset('assets/css/*.css',array(new CssMinFilter()));
    $am->set('basecss',$css);

    // Dumping assets into public
    $writer = new AssetWriter('public');
    $writer->writeManagerAssets($am);

所以 – 我预计来自资产/ css的css文件将被组合,被细分并转储到名为“basecss.css”的公共目录中.这是我得到的例外:

PHP Fatal error:  Uncaught exception 'RuntimeException' with message 'Unable to write file public/' in /generate_assets/vendor/kriswallsmith/assetic/src/Assetic/AssetWriter.php:106
Stack trace:
#0 /generate_assets/vendor/kriswallsmith/assetic/src/Assetic/AssetWriter.php(65): AsseticAssetWriter::write('public/','*{color:green}?...')
#1 /generate_assets/vendor/kriswallsmith/assetic/src/Assetic/AssetWriter.php(54): AsseticAssetWriter->writeAsset(Object(AsseticAssetGlobAsset))
#2 /generate_assets/run(31): AsseticAssetWriter->writeManagerAssets(Object(AsseticAssetManager))
#3 {main}
  thrown in /generate_assets/vendor/kriswallsmith/assetic/src/Assetic/AssetWriter.php on line 106

所以 – 似乎assetic试图转储名为’public’而不是’public / basecss.css’的文件?任何帮助?

附:解析度:

好.洙.显然我必须跑

$css->setTargetPath('css_file_name.css');

然后它工作…

从文档中不完全清楚,但在 Dumping Assets to static files部分中提到
$writer->writeManagerAssets($am);

“将利用资产的目标路径”.所以是的,你建议在编写资产之前设置目标路径可以解决问题:

$css->setTargetPath('css_file_name.css');

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读