我们有两个具有不同根类别的商店。要求是从当前商店的不同根目录显示类别。
在Magento 1中处理的方式是,创建了一个单独的路由器来匹配类别路径,当匹配该路径时,它将请求分发到类别控制器的“查看”操作。
这里的技巧是在调用initCateogory之前,将商店设置为该类别所属的其他商店,在加载类别之后,我们将还原为current_store。
我们在Magento 2中尝试了类似的方法,但是看起来确实加载了类别页面,但是数据为空白。
initCategory方法返回正确的类别,execute方法返回页面数据。但是,由于某些原因,从来没有点击product.phtml文件。
//match method of router.php
public function match(\Magento\Framework\App\RequestInterface $request)
{
//after match criteria
{
$request->setModuleName('series');
$request->setControllerName('category');
$request->setActionName('view');
$request->setControllerModule('catalog');
$request->setParam('id', '111111');
return $this->actionFactory->create(
'Magento\Framework\App\Action\Forward',
['request' => $request]
);
}
}
// from my view.php
protected function _initCategory()
{
$_objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$store_manager = $_objectManager->get(\Magento\Store\Model\StoreManagerInterface::class);
$current_store = 1;
$other_store =2;
$store_manager->setCurrentStore($other_store);
$category = parent::_initCategory();
$store_manager->setCurrentStore($current_store);
return $category;
}
它应该加载类别,但是显示空白页。