Trong pub/index.php
, mã sau đây được sử dụng để đặt URL thay đổi cho phương tiện và tài sản tĩnh thành bỏ qua "/ 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);
Thật không may trong các tập lệnh CLI ( bin/magento
) không có gì như thế này.
Tôi tìm thấy lớp Magento\Setup\Mvc\Bootstrap\InitParamListener
với mã sau đây:
$initParams = $application->getServiceManager()->get(self::BOOTSTRAP_PARAM);
$directoryList = $this->createDirectoryList($initParams);
Nhưng tôi không hiểu Trình quản lý dịch vụ Zend này lấy dữ liệu ở đâu và làm thế nào có thể ảnh hưởng đến nó.
Vấn đề cụ thể của tôi là một người lập chỉ mục phải tạo các URL đầy đủ và hiện tại nó thích http://magento.local/pub/media/...
, nơi tôi cần nó để đượchttp://magento.local/media/...
Làm cách nào tôi có thể nói với CLI rằng máy chủ ảo của tôi trỏ đến pub
và "pub" không phải là một phần của URL?
Lý tưởng là nó sẽ hoạt động mà không cần phải dựa vào các tham số CLI hoặc biến môi trường bổ sung.
--magento-init-params=MAGE_DIRS[media][uri]=media
. Điều này thực sự hoạt động cho tất cả các lệnh (hiển nhiên bằng cách chuyển qua mã), nhưng các lệnh bên ngoài setup:
không gian tên không chính xác gây ra lỗi mà tùy chọn không tồn tại.