yii2 - 如何在 Yii2 模块中包含图像
问题描述
无法在 Yii2 模块的视图中提供正确的图像路径。脚本和样式已正确加载。
模块结构:
|-assets
| ↳Asset.php
|-controllers
|-models
|-public
| |-css
| | ↳styles.css
| |-js
| | ↳script.js
| |-img
| ↳image.gif
|-views
| ↳view.php
|-Module.php
资产.php:
class Asset extends AssetBundle {
public $sourcePath = '@app/modules/scrapy/public';
public $css = ['css/styles.css'];
public $js = ['js/scrapy.js'];
}
Module.php 的片段:
public function init() {
parent::init();
$this->setAliases([
'@modulename' => '@app/modules/module',
]);
}
public function getViewPath() {
return '@modulename/views/';
}
解决方案
在您的视图文件中注册模块资产:
<?php
// include module asset class
use app\modules\mycoolmodule\assets\Asset;
// register module asset in view and store it to a variable
$myAssetBundle = Asset::register($this);
?>
现在从 img 资产文件夹访问图像:
<img src="<?= $myAssetBundle->baseUrl . '/img/image.gif'; ?>" alt="image" />
所以你想要的是$myAssetBundle->baseUrl
你的资产包的动态 url。
PS:app
assets和assets
有区别module|widgets
:
https ://github.com/yiisoft/yii2/issues/3048
推荐阅读
- python - 必须安装 libgcc_s.so.1 才能使 pthread_cancel 工作
- python - 无法使用 BeautifulSoup 抓取 HTML 标记,抛出 NoneType
- node.js - 尝试使用 preSignedUrl 将图像上传到 aws s3 存储桶时出现 400 错误请求错误。出了什么问题?
- python - 在 cpanel 上设置 python 时收到 503 服务器繁忙错误代码
- python - 找到 PyInstaller 路径?
- python - Atom 'script' 包给了我 ModuleNotFoundError 和 Python
- javascript - 单击全部展开时无法向数据表的子行添加信息
- r - 如何保存详细输出
- reactjs - React:为什么在调用钩子的 setValue 时会重新渲染兄弟组件,我该如何阻止它。请输入下面的代码
- python-3.x - 如何调用默认的退出按钮(最小化/全屏按钮旁边的 on)?解决了