Yii2 AssetManager 发布路径包括 URL 方案

标签 yii2 assets

在我的 Controller 中,我实现了发布单个 Assets (例如图像)并返回 URL 的功能:

/**
 * Publish an asset and return url
 *
 * @param $src
 *
 * @return mixed
 */
public function publishAsset( $src ) {
    $path = Yii::getAlias( $src );
    if ( ! $this->assetManager ) {
        $this->assetManager = new AssetManager();
    }
    $return = $this->assetManager->publish( $path );
    return $return[1];
}

然后在我的 View 中这样调用它:

<?= $this->context->publishAsset('@app/assets/img/logo.png') ?>

工作正常,但该函数返回已发布的 URL,前面没有“方案”。 例如它返回 /assets/7cf54cf2/img/logo.png 而不是 http://www.example.com/assets/7cf54cf2/img/logo.png

如何使用 AssetManager 或调整我的代码以获得完整的 URL? 我在文档中找不到答案,到目前为止我想出的唯一解决方案是在返回之前手动将其添加到前面。

我在尝试使用此功能为电子邮件生成 HTML 时遇到了这个问题。当然,电子邮件中的 URL 必须在其前面包含方案。

除了我还有什么建议吗?谢谢!

最佳答案

尝试使用 url 助手

use yii\helpers\Url;

$publishedPath = $this->assetManager->publish( $path );
   return (Url::to($publishedPath[1], true));

关于Yii2 AssetManager 发布路径包括 URL 方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32676450/

相关文章:

android - Android 上按 ABI 拆分 Assets

java - 在android java中加载资源的最佳方法

Yii2,在数据库查询中添加额外的虚拟字段

mysql - 如何在 Yii2 的一个查询中获取相关表中字段的总和

ruby-on-rails - 使用 docker-compose 部署的 Rails, Assets 不工作

css - Yii2 覆盖 bootstrap.css/bootstrap.min.css

ruby-on-rails - Assets 管道预编译所有 Assets 文件夹子目录

image - 使用 Yii2 在数据库中上传多个文件 URL

yii2 - 为 Yii 2 设置数据库

mysql - 如何在 Yii2 中选择除一列之外的所有列?