Em pub/index.php
, o código a seguir é usado para definir URLs de alteração para mídia e ativos 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);
Infelizmente nos scripts CLI ( bin/magento
) não há nada como isso.
Encontrei a classe Magento\Setup\Mvc\Bootstrap\InitParamListener
com o seguinte código:
$initParams = $application->getServiceManager()->get(self::BOOTSTRAP_PARAM);
$directoryList = $this->createDirectoryList($initParams);
Mas não entendo onde esse Zend Service Manager recupera os dados e como pode ser possível influenciá-los.
Meu problema concreto é que um indexador precisa gerar URLs completos e atualmente gosta http://magento.local/pub/media/...
, onde eu precisohttp://magento.local/media/...
Como posso dizer à CLI que meu host virtual aponta para pub
"pub" e não deve fazer parte dos URLs?
Idealmente, isso deve funcionar sem ter que confiar em parâmetros adicionais da CLI ou variáveis de ambiente.
--magento-init-params=MAGE_DIRS[media][uri]=media
. Na verdade, isso funciona para todos os comandos (evidente ao percorrer o código), mas comandos fora do setup:
espaço para nome incorretamente dão um erro de que a opção não existe.