Tôi đang sử dụng Magento 2 CE Phiên bản 2.1.0
Tham khảo http://inchoo.net/magento-2/routing-in-magento-2/ để định tuyến.
Router.php
Mã điều khiển của tôi
public function match(\Magento\Framework\App\RequestInterface $request) {
$identifier = trim($request->getPathInfo(), '/');
if (strpos($identifier, 'test') !== false) {
$request->setModuleName('moduletest')->setControllerName('test')->setActionName('test');
} else {
//There is no match
return;
}
return $this->actionFactory->create(
'Magento\Framework\App\Action\Forward', ['request' => $request]
);
}
Tôi tìm thấy @ nhà cung cấp \ magento \ framework \ App \ FrontContoder.php
public function dispatch(RequestInterface $request)
{
\Magento\Framework\Profiler::start('routers_match');
$routingCycleCounter = 0;
$result = null;
while (!$request->isDispatched() && $routingCycleCounter++ < 100) {
/** @var \Magento\Framework\App\RouterInterface $router */
foreach ($this->_routerList as $router) {
try {
$actionInstance = $router->match($request);
if ($actionInstance) {
$request->setDispatched(true);
$this->response->setNoCacheHeaders();
if ($actionInstance instanceof \Magento\Framework\App\Action\AbstractAction) {
$result = $actionInstance->dispatch($request);
} else {
$result = $actionInstance->execute();
}
break;
}
} catch (\Magento\Framework\Exception\NotFoundException $e) {
$request->initForward();
$request->setActionName('noroute');
$request->setDispatched(false);
break;
}
}
}
\Magento\Framework\Profiler::stop('routers_match');
if ($routingCycleCounter > 100) {
throw new \LogicException('Front controller reached 100 router match iterations');
}
return $result;
}
Tôi đã tải xuống http://inchoo.net/magento-2/routing-in-magento-2/ mã gitHub & cài đặt & hoạt động tốt. Nhưng nó không hoạt động cho mô-đun tùy chỉnh của tôi.
Khi tôi gõ http: // localhost / magento2 / mymodule / testsplerouter, nó đi đến bộ định tuyến InChoo Controller không phải của tôi.
Làm thế nào để giải quyết vấn đề này?