Magento 2 CEバージョン2.1.0を使用しています
ルーティングのためにhttp://inchoo.net/magento-2/routing-in-magento-2/を参照します。
私のRouter.php
コントローラーコード
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]
);
}
@ vendor \ magento \ framework \ App \ FrontController.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;
}
http://inchoo.net/magento-2/routing-in-magento-2/ gitHubコードをダウンロードしてインストールし、正常に動作しました。しかし、それは私のカスタムモジュールでは機能しません。
私が入力したときのhttp:// localhost /をmagento2 /のmymodule /たExampleRouterそれはルータInChooコントローラに鉱山ではない行きます。
この問題を解決するには?