예제 #1
0
 /**
  * @param \Magento\Eav\Model\Entity\Collection\AbstractCollection $resultCollection
  * @param \Magento\Catalog\Block\Product\ListProduct $subject
  * @return \Magento\Eav\Model\Entity\Collection\AbstractCollection $resultCollection
  */
 public function afterGetLoadedProductCollection(\Magento\Catalog\Block\Product\ListProduct $subject, $resultCollection)
 {
     if ($resultCollection->count() == 1) {
         /** @var \Magento\Catalog\Model\Product $product */
         $product = $resultCollection->getFirstItem();
         $this->response->setRedirect($product->getProductUrl());
     }
     return $resultCollection;
 }
예제 #2
0
 /**
  * Handler for session errors
  *
  * @param \Exception $exception
  * @return bool
  */
 private function handleSessionException(\Exception $exception)
 {
     if ($exception instanceof \Magento\Framework\Exception\SessionException) {
         $this->_response->setRedirect($this->_request->getDistroBaseUrl());
         $this->_response->sendHeaders();
         return true;
     }
     return false;
 }
예제 #3
0
 /**
  * Handler for session errors
  *
  * @param Bootstrap $bootstrap
  * @param \Exception $exception
  * @return bool
  */
 private function handleSessionException(Bootstrap $bootstrap, \Exception $exception)
 {
     if ($exception instanceof \Magento\Framework\Session\Exception) {
         $path = $this->getBaseUrlPath($bootstrap->getParams());
         $this->_response->setRedirect($path);
         $this->_response->sendHeaders();
         return true;
     }
     return false;
 }
예제 #4
0
 /**
  * Run fall-back correction
  *
  * @return bool
  */
 public function doFallbackCorrection()
 {
     $queryText = $this->queryHelper->getQueryText();
     $fallbackText = $this->queryHelper->fallback($queryText);
     if ($fallbackText && $fallbackText != $queryText && $fallbackText != $this->queryHelper->getFallbackText()) {
         $url = $this->queryHelper->getFallbackUrl($queryText, $fallbackText);
         $this->response->setRedirect($url);
         return true;
     }
     return false;
 }
예제 #5
0
 /**
  * Authenticate controller action by login customer
  *
  * @param   bool|null $loginUrl
  * @return  bool
  */
 public function authenticate($loginUrl = null)
 {
     if ($this->isLoggedIn()) {
         return true;
     }
     $this->setBeforeAuthUrl($this->_createUrl()->getUrl('*/*/*', ['_current' => true]));
     if (isset($loginUrl)) {
         $this->response->setRedirect($loginUrl);
     } else {
         $arguments = $this->_customerUrl->getLoginUrlParams();
         if ($this->_session->getCookieShouldBeReceived() && $this->_createUrl()->getUseSession()) {
             $arguments += ['_query' => [$this->sidResolver->getSessionIdQueryParam($this->_session) => $this->_session->getSessionId()]];
         }
         $this->response->setRedirect($this->_createUrl()->getUrl(\Magento\Customer\Model\Url::ROUTE_ACCOUNT_LOGIN, $arguments));
     }
     return false;
 }
예제 #6
0
 /**
  * {@inheritdoc}
  */
 public function setRedirect($url, $code = 302)
 {
     $pluginInfo = $this->pluginList->getNext($this->subjectType, 'setRedirect');
     if (!$pluginInfo) {
         return parent::setRedirect($url, $code);
     } else {
         return $this->___callPlugins('setRedirect', func_get_args(), $pluginInfo);
     }
 }