可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
yii2 Question
My yii2 install in d:\wamp\www\yii2store
I want to get above path to save images which will be uploaded by me or users.
I have pass all available arguments in Yii::getAlias('@webroot')
(below are the lists of argument which I have used).
@yii
- framework directory.
@app
- base path of currently running application.
@runtime
- runtime directory.
@vendor
- Composer vendor directory.
@webroot
- web root directory of currently running web application.
@web
- base URL of currently running web application.
And also once I will get above path to save images then how can I get path something like this localhost/yiistore2/upload
to be use in img tag src.
One more thing how can I create my own alias with Yii::setAlias()
and where to create this so that I can load it on every controller.
回答1:
Open file
D:\wamp\www\yiistore2\common\config\params-local.php
Paste below code before return
Yii::setAlias('@anyname', realpath(dirname(__FILE__).'/../../'));
After inserting above code in params-local.php file your file should look like this.
Yii::setAlias('@anyname', realpath(dirname(__FILE__).'/../../'));
return [
];
Now to get path of your root (in my case its D:\wamp\www\yiistore2
) directory you can use below code in any php file.
echo Yii::getAlias('@anyname');
回答2:
Use "getAlias" in Yii2
\Yii::getAlias('@webroot')
回答3:
Try out this,
My installation is at D:\xampp\htdocs\advanced
\Yii::$app->basePath
will give like D:\xampp\htdocs\advanced\backend
.
\Yii::$app->request->BaseUrl
will give like localhost\advanced\backend\web\
You may store the image using \Yii::$app->basePath
and show it using \Yii::$app->request->BaseUrl
回答4:
Supposing you have a writable "uploads" folder in your application:
You can define a param like this:
Yii::$app->params['uploadPath'] = realpath(Yii::$app->basePath) . '/uploads/';
Then you can simply use the parameter as:
$path1 = Yii::$app->params['uploadPath'] . $filename;
Just depending on if you are using advanced or simple template the base path will be (following the link provided by phazei):
Simple @app: Your application root directory
Advanced @app: Your application root directory (either frontend or
backend or console depending on where you access it from)
This way the application will be more portable than using realpath(dirname(__FILE__).'/../../'));
回答5:
To get the base URL you can use this (would return "http:// localhost/yiistore2/upload")
Yii::app()->baseUrl
The following Code would return just "localhost/yiistore2/upload" without http[s]://
Yii::app()->getBaseUrl(true)
Or you could get the webroot path (would return "d:\wamp\www\yii2store")
Yii::getPathOfAlias('webroot')
回答6:
If you want to get the root directory of your yii2 project use, assuming that the name of your project is project_app you'll need to use:
echo Yii::getAlias('@app');
on windows you'd see "C:\dir\to\project_app"
on linux you'll get "/var/www/dir/to/your/project_app"
I was formally using:
echo Yii::getAlias('@webroot').'/..';
I hope this helps someone
回答7:
Open below file C:\xampp\htdocs\project\common\config\params-local.php
Before your code:
<?php
return [
];
after your code:
<?php
yii::setAlias('@path1', 'localhost/foodbam/backend/web');
return [
];