İçinde pub/index.php, "/ pub" 'ı atlayacak medya ve statik varlıkların değişiklik URL'lerini ayarlamak için şu kod kullanılır:
$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);
Ne yazık ki CLI scriptlerinde ( bin/magento) böyle bir şey yok.
Magento\Setup\Mvc\Bootstrap\InitParamListenerAşağıdaki kod ile sınıfı buldum :
$initParams = $application->getServiceManager()->get(self::BOOTSTRAP_PARAM);
$directoryList = $this->createDirectoryList($initParams);
Ancak bu Zend Service Manager'ın verileri nereden aldığını ve bu verileri nasıl etkileyebileceğini anlamıyorum.
Benim somut sorun bir dizinleyici tam URL oluşturmak zorunda ve şu anda gibi http://magento.local/pub/media/..., nerede olması gerekirhttp://magento.local/media/...
CLI'ya sanal ana makinemin işaret ettiğini pubve "pub" ın URL'lerin bir parçası olmaması gerektiğini nasıl söyleyebilirim ?
İdeal olarak, bu ek CLI parametrelerine veya ortam değişkenlerine güvenmek zorunda kalmadan çalışmalıdır.
--magento-init-params=MAGE_DIRS[media][uri]=media. Bu aslında tüm komutlar için çalışır (kod üzerinden atlayarak belirgindir), ancak setup:ad alanının dışındaki komutlar seçeneğin bulunmadığına yanlış bir hata verir.