W: pub/index.php
następujący kod służy do ustawienia adresów URL zmian zasobów multimedialnych i statycznych w celu pominięcia „/ 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);
Niestety w skryptach CLI ( bin/magento
) nie ma czegoś takiego.
Znalazłem klasę Magento\Setup\Mvc\Bootstrap\InitParamListener
z następującym kodem:
$initParams = $application->getServiceManager()->get(self::BOOTSTRAP_PARAM);
$directoryList = $this->createDirectoryList($initParams);
Ale nie rozumiem, skąd ten Zend Service Manager pobiera dane i jak można na nie wpłynąć.
Moim konkretnym problemem jest to, że indeksator musi generować pełne adresy URL i obecnie robi to http://magento.local/pub/media/...
, tam gdzie jest to potrzebnehttp://magento.local/media/...
Jak mogę powiedzieć CLI, że mój wirtualny host wskazuje pub
i „pub” nie powinien być częścią adresów URL?
Idealnie powinno to działać bez konieczności polegania na dodatkowych parametrach CLI lub zmiennych środowiskowych.
--magento-init-params=MAGE_DIRS[media][uri]=media
. W rzeczywistości działa to dla wszystkich poleceń (oczywiste, przechodząc przez kod), ale polecenia spoza setup:
przestrzeni nazw niepoprawnie dają błąd, że opcja nie istnieje.