namespace Nxtech\Casestudy\Controller; use Magento\Framework\App\RouterInterface; use Magento\Framework\App\RequestInterface; use Magento\Framework\App\ActionFactory; use Nxtech\Casestudy\Model\CasestudyFactory; class Router implements RouterInterface { protected $actionFactory; protected $casestudyFactory; public function __construct( ActionFactory $actionFactory, CasestudyFactory $casestudyFactory ) { $this->actionFactory = $actionFactory; $this->casestudyFactory = $casestudyFactory; } public function match(RequestInterface $request) { $identifier = trim($request->getPathInfo(), '/'); // VERY IMPORTANT: prevent infinite loop if ($request->getModuleName() == 'casestudies') { return null; } if (strpos($identifier, 'case-studies/') !== 0) { return null; } $urlKey = str_replace('case-studies/', '', $identifier); $urlKey = rtrim($urlKey, '/'); $model = $this->casestudyFactory->create() ->getCollection() ->addFieldToFilter('url', $urlKey) ->getFirstItem(); if (!$model->getId()) { return null; } $request->setModuleName('casestudies') ->setControllerName('index') ->setActionName('view') ->setParam('id', $model->getId()); return $this->actionFactory->create( \Magento\Framework\App\Action\Forward::class ); } }namespace Nxtech\Casestudy\Controller; use Magento\Framework\App\RouterInterface; use Magento\Framework\App\RequestInterface; use Magento\Framework\App\ActionFactory; use Nxtech\Casestudy\Model\CasestudyFactory; class Router implements RouterInterface { protected $actionFactory; protected $casestudyFactory; public function __construct( ActionFactory $actionFactory, CasestudyFactory $casestudyFactory ) { $this->actionFactory = $actionFactory; $this->casestudyFactory = $casestudyFactory; } public function match(RequestInterface $request) { $identifier = trim($request->getPathInfo(), '/'); // VERY IMPORTANT: prevent infinite loop if ($request->getModuleName() == 'casestudies') { return null; } if (strpos($identifier, 'case-studies/') !== 0) { return null; } $urlKey = str_replace('case-studies/', '', $identifier); $urlKey = rtrim($urlKey, '/'); $model = $this->casestudyFactory->create() ->getCollection() ->addFieldToFilter('url', $urlKey) ->getFirstItem(); if (!$model->getId()) { return null; } $request->setModuleName('casestudies') ->setControllerName('index') ->setActionName('view') ->setParam('id', $model->getId()); return $this->actionFactory->create( \Magento\Framework\App\Action\Forward::class ); } }namespace Nxtech\Casestudy\Controller; use Magento\Framework\App\RouterInterface; use Magento\Framework\App\RequestInterface; use Magento\Framework\App\ActionFactory; use Nxtech\Casestudy\Model\CasestudyFactory; class Router implements RouterInterface { protected $actionFactory; protected $casestudyFactory; public function __construct( ActionFactory $actionFactory, CasestudyFactory $casestudyFactory ) { $this->actionFactory = $actionFactory; $this->casestudyFactory = $casestudyFactory; } public function match(RequestInterface $request) { $identifier = trim($request->getPathInfo(), '/'); // VERY IMPORTANT: prevent infinite loop if ($request->getModuleName() == 'casestudies') { return null; } if (strpos($identifier, 'case-studies/') !== 0) { return null; } $urlKey = str_replace('case-studies/', '', $identifier); $urlKey = rtrim($urlKey, '/'); $model = $this->casestudyFactory->create() ->getCollection() ->addFieldToFilter('url', $urlKey) ->getFirstItem(); if (!$model->getId()) { return null; } $request->setModuleName('casestudies') ->setControllerName('index') ->setActionName('view') ->setParam('id', $model->getId()); return $this->actionFactory->create( \Magento\Framework\App\Action\Forward::class ); } }