İç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\InitParamListener
Aş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 pub
ve "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.