Question yii2
Mon installation yii2 dans d:\wamp\www\yii2store
Je veux obtenir le chemin ci-dessus pour enregistrer les images qui seront téléchargées par moi-même ou par les utilisateurs.
J'ai passé tous les arguments disponibles dans Yii::getAlias('@webroot')
(ci-dessous sont les listes d'arguments que j'ai utilisées).
@yii
- répertoire framework.
@app
- chemin de base de l'application en cours d'exécution.
@runtime
- répertoire d'exécution.
@vendor
- Répertoire des vendeurs du compositeur.
@webroot
- répertoire racine Web de l'application Web en cours d'exécution.
@web
- URL de base de l'application Web en cours d'exécution.
Et aussi une fois que j'aurai le chemin ci-dessus pour enregistrer les images, comment puis-je obtenir le chemin quelque chose comme ceci localhost/yiistore2/upload
qui sera utilisé dans img tag src.
Encore une chose, comment puis-je créer mon propre alias avec Yii::setAlias()
et où le créer pour pouvoir le charger sur chaque contrôleur.
Ouvrir le fichier D:\wamp\www\yiistore2\common\config\params-local.php
Coller ci-dessous le code avant le retour
Yii::setAlias('@anyname', realpath(dirname(__FILE__).'/../../'));
Après avoir inséré le code ci-dessus dans le fichier params-local.php, votre fichier devrait ressembler à ceci.
Yii::setAlias('@anyname', realpath(dirname(__FILE__).'/../../'));
return [
];
Maintenant pour obtenir le chemin de votre répertoire racine (dans mon cas son D:\wamp\www\yiistore2
), vous pouvez utiliser le code ci-dessous dans n'importe quel fichier php.
echo Yii::getAlias('@anyname');
Utilisez "getAlias" dans Yii2
\Yii::getAlias('@webroot')
Essayez ceci,
Mon installation est à D:\xampp\htdocs\advanced
\Yii::$app->basePath
donnera comme D:\xampp\htdocs\advanced\backend
.
\Yii::$app->request->BaseUrl
donnera comme localhost\advanced\backend\web\
Vous pouvez stocker l'image en utilisant \Yii::$app->basePath
et l'afficher en utilisant \Yii::$app->request->BaseUrl
En supposant que vous ayez un dossier "uploads" en écriture dans votre application:
Vous pouvez définir un paramètre comme ceci:
Yii::$app->params['uploadPath'] = realpath(Yii::$app->basePath) . '/uploads/';
Ensuite, vous pouvez simplement utiliser le paramètre comme:
$path1 = Yii::$app->params['uploadPath'] . $filename;
Selon que vous utilisiez un modèle avancé ou simple, le chemin de base sera (suivant le link fourni par phazei):
Simple @app: votre répertoire racine d'application
Advanced @app: le répertoire racine de votre application (frontend ou Backend ou console en fonction de l'endroit où vous y accédez)
De cette façon, l'application sera plus portable que d'utiliser realpath(dirname(__FILE__).'/../../'));
Si vous voulez obtenir le répertoire racine de votre projet yii2, en supposant que le nom de votre projet est project_app , vous devez utiliser:
echo Yii::getAlias('@app');
sur Windows, vous verrez "C:\dir\to\project_app"
sur linux, vous aurez "/ var/www/dir/to/votre/project_app"
J'utilisais formellement:
echo Yii::getAlias('@webroot').'/..';
J'espère que ça aidera quelqu'un
Pour obtenir l'URL de base, vous pouvez l'utiliser (vous renverriez "http: // localhost/yiistore2/upload")
Yii::app()->baseUrl
Le code suivant renverrait simplement "localhost/yiistore2/upload" sans http [s]: //
Yii::app()->getBaseUrl(true)
Ou vous pourriez obtenir le chemin de la racine Web (vous renverriez "d:\wamp\www\yii2store")
Yii::getPathOfAlias('webroot')
Ouvrir sous le fichier C:\xampp\htdocs\project\common\config\params-local.php
Avant votre code:
<?php
return [
];
après votre code:
<?php
yii::setAlias('@path1', 'localhost/foodbam/backend/web');
return [
];