【发布时间】:2019-07-19 11:04:34
【问题描述】:
您好,我在 Yii2 基本应用程序中制作了一个模块。我需要一条路径来在我的视图中显示图像,但我无法找到正确的路径。我的网络可访问目录位于C:/xampp/htdocs/basic,仅包含 Yii2 入口脚本和已发布资产文件夹。我所有的应用程序文件都位于一个不可通过网络访问的目录C:/xampp/htdocs/gbia,该目录与我的 Yii2 入口脚本和已发布资产所在的文件夹位于同一目录级别(或者有些人可能称之为“同级目录”)。
我在我的模型中创建了一个上传路径参数,它被控制器的方法调用。
经过研究,我在不同的场合尝试了这些:
Yii::$app->params['uploadUrl'] = Yii::$app->urlManager->baseUrl . '/uploads/batam/';
Yii::$app->params['uploadUrl'] = Yii::$app->request->baseUrl . '/uploads/batam/';
Yii::$app->params['uploadUrl'] = Yii::getAlias('@web').'/uploads/batam/';
还有Url::base()、Url::base(true)
但是他们都没有返回我的baseUrl。他们只回显了/uploads/batam/,没有基本 URL,好像基本 URL 返回 NULL。
最后,我尝试回显Yii::$app->homeUrl;,它返回/
我还在学习中,据我所知,@web 指的是我们的 index.php 入口脚本所在的目录,如果我错了,请纠正我。所以我试图通过在我的配置中创建一个新别名来解决这个问题:
'aliases'=>[
'@batam'=> Yii::$app->getAlias('@webroot') . '/../gbia/uploads/batam',
],
也尝试使用getAlias('@web'),但他们都返回此错误:Uncaught Error: Call to a member function getAlias() on null
我也在我的别名中尝试过这个:
'@batam'=> Yii::$app->basePath.'/../gbia/uploads/batam',
但也失败了。任何人都可以帮忙吗?谢谢!
【问题讨论】:
-
Yii::$app->getAlias('@webroot')应该是Yii::getAlias('@webroot') -
@MuhammadOmerAslam 我收到了这个错误:
Fatal error: Uncaught yii\base\InvalidArgumentException: Invalid path alias: @webroot in C:\xampp\htdocs\gbia\vendor\yiisoft\yii2\BaseYii.php:154 Stack trace: #0 C:\xampp\htdocs\gbia\config\web.php(21): yii\BaseYii::getAlias('@webroot') #1 C:\xampp\htdocs\basic\index.php(10): require('C:\\xampp\\htdocs...') #2 {main} thrown in C:\xampp\htdocs\gbia\vendor\yiisoft\yii2\BaseYii.php on line 154 -
从
webroot路径创建@batam别名是否正确,而不是使用/,,/向上一个目录,而不是像我尝试的那样转到不可Web 访问的目录gbia做什么? -
添加了一个答案看看是否有帮助