En pub/index.php
, el siguiente código se utiliza para establecer las URL de cambio para medios y activos estáticos para omitir "/ pub":
$params[Bootstrap::INIT_PARAM_FILESYSTEM_DIR_PATHS] = [
DirectoryList::PUB => [DirectoryList::URL_PATH => ''],
DirectoryList::MEDIA => [DirectoryList::URL_PATH => 'media'],
DirectoryList::STATIC_VIEW => [DirectoryList::URL_PATH => 'static'],
DirectoryList::UPLOAD => [DirectoryList::URL_PATH => 'media/upload'],
];
$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $params);
Desafortunadamente, en los scripts CLI ( bin/magento
) no hay nada como esto.
Encontré la clase Magento\Setup\Mvc\Bootstrap\InitParamListener
con el siguiente código:
$initParams = $application->getServiceManager()->get(self::BOOTSTRAP_PARAM);
$directoryList = $this->createDirectoryList($initParams);
Pero no entiendo dónde este administrador de servicios de Zend recupera los datos y cómo podría ser posible influir en ellos.
Mi problema concreto es que un indexador tiene que generar URL completos y actualmente lo hace http://magento.local/pub/media/...
, donde necesito que estéhttp://magento.local/media/...
¿Cómo puedo decirle a la CLI que mi host virtual apunta pub
y que "pub" no debe formar parte de las URL?
Idealmente, esto debería funcionar sin tener que depender de parámetros adicionales de CLI o variables de entorno.
--magento-init-params=MAGE_DIRS[media][uri]=media
. En realidad, esto funciona para todos los comandos (evidente al recorrer el código), pero los comandos fuera del setup:
espacio de nombres incorrectamente dan un error de que la opción no existe.