Как получить корневой каталог в yii2

yii2 Вопрос

Моя установка yii2 в d:\wamp\www\yii2store

Я хочу получить выше пути для сохранения изображений, которые будут загружены мной или пользователями.

Я передал все доступные аргументы в Yii::getAlias('@webroot') (ниже приведены списки аргументов, которые я использовал).

@yii – каталог фреймворков.

@app – базовый путь для текущего приложения.

@runtime – каталог времени выполнения.

@vendor – каталог поставщиков композиторов.

@webroot – веб-корневая директория текущего веб-приложения.

@web – базовый URL-адрес текущего веб-приложения.

А также, как только я получу выше путь для сохранения изображений, тогда как я могу получить путь, похожий на этот localhost/yiistore2/upload который будет использоваться в img tag src.

Еще одна вещь, как я могу создать свой собственный псевдоним с Yii::setAlias() и где его создать, чтобы я мог загрузить его на каждом контроллере.

Открыть файл D:\wamp\www\yiistore2\common\config\params-local.php

Вставьте под кодом перед возвратом

 Yii::setAlias('@anyname', realpath(dirname(__FILE__).'/../../')); 

После вставки выше кода в файл params-local.php ваш файл должен выглядеть так.

 Yii::setAlias('@anyname', realpath(dirname(__FILE__).'/../../')); return [ ]; 

Теперь, чтобы получить путь к вашему корню (в моем случае его каталог D:\wamp\www\yiistore2 ), вы можете использовать код ниже в любом php-файле.

 echo Yii::getAlias('@anyname'); 

Используйте «getAlias» в Yii2

  \Yii::getAlias('@webroot') 

Попробуйте это,

Моя установка находится в папке D: \ xampp \ htdocs \ advanced

\Yii::$app->basePath даст как D:\xampp\htdocs\advanced\backend .

\Yii::$app->request->BaseUrl даст как localhost\advanced\backend\web\

Вы можете сохранить изображение с помощью \Yii::$app->basePath и показать его с помощью \Yii::$app->request->BaseUrl

Предположим, что у вас есть загружаемая папка «uploads» в вашем приложении:

Вы можете определить такой параметр:

 Yii::$app->params['uploadPath'] = realpath(Yii::$app->basePath) . '/uploads/'; 

Затем вы можете просто использовать параметр как:

 $path1 = Yii::$app->params['uploadPath'] . $filename; 

Просто в зависимости от того, используете ли вы расширенный или простой шаблон, базовый путь будет (по ссылке, предоставленной phazei):

Простой @app: корневой каталог приложения

Advanced @app: корневой каталог приложения (внешний или серверный сервер или консоль в зависимости от того, где вы его используете)

Таким образом, приложение будет более переносимым, чем использование realpath(dirname(__FILE__).'/../../'));

Чтобы получить базовый URL-адрес, вы можете использовать его (вернете «http: // localhost / yiistore2 / upload»)

 Yii::app()->baseUrl 

Следующий код вернет только «localhost / yiistore2 / upload» без http [s]: //

 Yii::app()->getBaseUrl(true) 

Или вы можете получить путь webroot (верните «d: \ wamp \ www \ yii2store»)

 Yii::getPathOfAlias('webroot') 

Открыть ниже файл C:\xampp\htdocs\project\common\config\params-local.php

Перед вашим кодом:

 <?php return [ ]; 

после вашего кода:

 <?php yii::setAlias('@path1', 'localhost/foodbam/backend/web'); return [ ];