У pub/index.php
наведеному нижче коді використовується для встановлення URL-адрес зміни для медіа та статичних активів, щоб опустити "/ 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);
На жаль, у сценаріях CLI ( bin/magento
) немає нічого подібного.
Я знайшов клас Magento\Setup\Mvc\Bootstrap\InitParamListener
із таким кодом:
$initParams = $application->getServiceManager()->get(self::BOOTSTRAP_PARAM);
$directoryList = $this->createDirectoryList($initParams);
Але я не розумію, де цей диспетчер послуг Zend витягує дані і як на них можна впливати.
Моя конкретна проблема полягає в тому, що індексатор повинен генерувати повні URL-адреси і в даний час робить це так http://magento.local/pub/media/...
, де мені це потрібноhttp://magento.local/media/...
Як я можу сказати CLI, що мій віртуальний хост вказує на pub
"pub" і не повинен бути частиною URL-адрес?
В ідеалі це повинно працювати, не покладаючись на додаткові параметри CLI або змінні середовища.
--magento-init-params=MAGE_DIRS[media][uri]=media
. Це насправді працює для всіх команд (очевидно, перейшовши через код), але команди поза setup:
простором імен неправильно дають помилку, що параметр не існує.