示例#1
0
 /**
  * Validate and Match Cms Page and modify request
  *
  * @param \Magento\Framework\App\RequestInterface $request
  * @return bool
  */
 public function match(\Magento\Framework\App\RequestInterface $request)
 {
     $identifier = trim($request->getPathInfo(), '/');
     $condition = new \Magento\Framework\Object(['identifier' => $identifier, 'continue' => true]);
     $this->_eventManager->dispatch('cms_controller_router_match_before', ['router' => $this, 'condition' => $condition]);
     $identifier = $condition->getIdentifier();
     if ($condition->getRedirectUrl()) {
         $this->_response->setRedirect($condition->getRedirectUrl());
         $request->setDispatched(true);
         return $this->actionFactory->create('Magento\\Framework\\App\\Action\\Redirect', ['request' => $request]);
     }
     if (!$condition->getContinue()) {
         return null;
     }
     /** @var \Magento\Cms\Model\Page $page */
     $page = $this->_pageFactory->create();
     $pageId = $page->checkIdentifier($identifier, $this->_storeManager->getStore()->getId());
     if (!$pageId) {
         return null;
     }
     $request->setModuleName('cms')->setControllerName('page')->setActionName('view')->setParam('page_id', $pageId);
     $request->setAlias(\Magento\Framework\Url::REWRITE_REQUEST_PATH_ALIAS, $identifier);
     return $this->actionFactory->create('Magento\\Framework\\App\\Action\\Forward', ['request' => $request]);
 }
示例#2
0
 /**
  * No cookies action
  *
  * @return void
  */
 public function execute()
 {
     $redirect = new \Magento\Framework\Object();
     $this->_eventManager->dispatch('controller_action_nocookies', ['action' => $this, 'redirect' => $redirect]);
     $url = $redirect->getRedirectUrl();
     if ($url) {
         $this->getResponse()->setRedirect($url);
     } elseif ($redirect->getRedirect()) {
         $this->_redirect($redirect->getPath(), $redirect->getArguments());
     } else {
         $this->_view->loadLayout(['default', 'noCookie']);
         $this->_view->renderLayout();
     }
     $this->getRequest()->setDispatched(true);
 }