ใน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:
เนมสเปซไม่ถูกต้องให้ข้อผิดพลาดว่าไม่มีตัวเลือก