¿Cómo obtener la ruta del directorio raíz en un phtml magento 2?

16
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();

$storeManager = $objectManager->get('\Magento\Store\Model\StoreManagerInterface');

$mediaPath  =   $fileSystem->getDirectoryRead(\Magento\Framework\App\Filesystem\DirectoryList::MEDIA)->getAbsolutePath();

devuelve ruta de medios. ¿Cómo obtener la ruta raíz de un proyecto en una página phtml?

Jose Rita
fuente

Respuestas:

39

Class \ Magento \ Framework \ Filesystem \ DirectoryList se usa para obtener rutas como root, media, var, etc.

Esto obtendrá el directorio raíz de su proyecto como este

/ var / www / html / myproject

Por ObjectManager

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();

$directory = $objectManager->get('\Magento\Framework\Filesystem\DirectoryList');

echo $rootPath  =  $directory->getRoot();

Por inyección de dependencia

protected $_dir;
...

public function __construct(
    ...
    \Magento\Framework\Filesystem\DirectoryList $dir,
    ...        
) {
    ...
    $this->_dir = $dir;
    ...
}

Obtenga otras rutas de directorio como

$this->_dir->getRoot(); // Output: /var/www/html/myproject

$this->_dir->getPath('media'); // Output: /var/www/html/myproject/pub/media

$this->_dir->getPath('pub'); // Output: /var/www/html/myproject/pub

$this->_dir->getPath('static'); // Output: /var/www/html/myproject/pub/static

$this->_dir->getPath('var'); // Output: /var/www/html/myproject/var

$this->_dir->getPath('app'); // Output: /var/www/html/myproject/app

$this->_dir->getPath('etc'); // Output: /var/www/html/myproject/app/etc

$this->_dir->getPath('lib_internal'); // Output: /var/www/html/myproject/lib/internal

$this->_dir->getPath('lib_web'); // Output: /var/www/html/myproject/lib/web

$this->_dir->getPath('tmp'); // Output: /var/www/html/myproject/var/tmp

$this->_dir->getPath('cache'); // Output: /var/www/html/myproject/var/cache

$this->_dir->getPath('log'); // Output: /var/www/html/myproject/var/log

$this->_dir->getPath('session'); // Output: /var/www/html/myproject/var/session

$this->_dir->getPath('setup'); // Output: /var/www/html/myproject/setup/src

$this->_dir->getPath('di'); // Output: /var/www/html/myproject/var/di

$this->_dir->getPath('upload'); // Output: /var/www/html/myproject/pub/media/upload

$this->_dir->getPath('generation'); // Output: /var/www/html/myproject/var/generation

$this->_dir->getPath('view_preprocessed'); // Output: /var/www/html/myproject/var/view_preprocessed

$this->_dir->getPath('composer_home'); // Output: /var/www/html/myproject/var/composer_home

$this->_dir->getPath('html'); // Output: /var/www/html/myproject/var/view_preprocessed/html

NOTA: Nunca debe usarlo \Magento\Framework\App\ObjectManager::getInstance() Derrota el propósito de la inyección de dependencia.

Príncipe Patel
fuente
método de fábrica no funciona ...
Sarfaraj Sipai
13

Puede usar la variable predeterminada de magento 2 para obtener la ruta absoluta del directorio de Magento

echo BP;
Sunil Patel
fuente
1

Tienes que usar ROOT para obtener el directorio raíz

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();

$storeManager = $objectManager->get('\Magento\Store\Model\StoreManagerInterface');
$fileSystem = $objectManager->get('Magento\Framework\Filesystem');
$mediaPath  =   $fileSystem->getDirectoryRead(\Magento\Framework\App\Filesystem\DirectoryList::ROOT)->getAbsolutePat‌​h()
Rakesh Jesadiya
fuente
por favor avíseme si tiene un problema
Rakesh Jesadiya
para obtener el resultado necesita agregar -> getAbsolutePath (); hasta el último código $ mediaPath = $ fileSystem-> getDirectoryRead (\ Magento \ Framework \ App \ Filesystem \ DirectoryList :: ROOT) -> getAbsolutePath ();
Rita Jose
0

Prefiero el enfoque de Alan Storm .

$object_manager = MagentoCoreModelObjectManager::getInstance();
$dir = $object_manager->get('MagentoAppDir');            
$base = $dir->getDir();
$media = $dir->getUrl(MagentoAppDir::MEDIA);

Y puede encontrar una lista completa de constantes en lib/Magento/App/Dir.php.

#File: lib/Magento/App/Dir.php
/**
 * Code base root
 */
const ROOT = 'base';

/**
 * Most of entire application
 */
const APP = 'app';

/**
 * Modules
 */
const MODULES = 'code';

/**
 * Themes
 */
const THEMES = 'design';

/**
 * Initial configuration of the application
 */
const CONFIG = 'etc';

/**
 * Libraries or third-party components
 */
const LIB = 'lib';

/**
 * Files with translation of system labels and messages from en_US to other languages
 */
const LOCALE = 'i18n';

/**
 * Directory within document root of a web-server to access static view files publicly
 */
const PUB = 'pub';

/**
 * Libraries/components that need to be accessible publicly through web-server (such as various DHTML components)
 */
const PUB_LIB = 'pub_lib';

/**
 * Storage of files entered or generated by the end-user
 */
const MEDIA = 'media';

/**
 * Storage of static view files that are needed on HTML-pages, emails or similar content
 */
const STATIC_VIEW = 'static';

/**
 * Public view files, stored to avoid repetitive run-time calculation, and can be re-generated any time
 */
const PUB_VIEW_CACHE = 'view_cache';

/**
 * Various files generated by the system in runtime
 */
const VAR_DIR = 'var';

/**
 * Temporary files
 */
const TMP = 'tmp';

/**
 * File system caching directory (if file system caching is used)
 */
const CACHE = 'cache';

/**
 * Logs of system messages and errors
 */
const LOG = 'log';

/**
 * File system session directory (if file system session storage is used)
 */
const SESSION = 'session';

/**
 * Dependency injection related file directory
 *
 */
const DI = 'di';

/**
 * Relative directory key for generated code
 */
const GENERATION = 'generation';

/**
 * Temporary directory for uploading files by end-user
 */
const UPLOAD = 'upload';
Ricardo Martins
fuente