Example #1
0
 /**
  * Prepares product view page - inits layout and all needed stuff
  *
  * $params can have all values as $params in \Magento\Catalog\Helper\Product - initProduct().
  * Plus following keys:
  *   - 'buy_request' - \Magento\Framework\Object holding buyRequest to configure product
  *   - 'specify_options' - boolean, whether to show 'Specify options' message
  *   - 'configure_mode' - boolean, whether we're in Configure-mode to edit product configuration
  *
  * @param \Magento\Framework\View\Result\Page $resultPage
  * @param int $productId
  * @param \Magento\Framework\App\Action\Action $controller
  * @param null|\Magento\Framework\Object $params
  * @throws \Magento\Framework\Exception\LocalizedException
  * @throws \Magento\Framework\Exception\NoSuchEntityException
  * @return \Magento\Catalog\Helper\Product\View
  */
 public function prepareAndRender(ResultPage $resultPage, $productId, $controller, $params = null)
 {
     // Prepare data
     $productHelper = $this->_catalogProduct;
     if (!$params) {
         $params = new \Magento\Framework\Object();
     }
     // Standard algorithm to prepare and render product view page
     $product = $productHelper->initProduct($productId, $controller, $params);
     if (!$product) {
         throw new \Magento\Framework\Exception\NoSuchEntityException(__('Product is not loaded'));
     }
     $buyRequest = $params->getBuyRequest();
     if ($buyRequest) {
         $productHelper->prepareProductOptions($product, $buyRequest);
     }
     if ($params->hasConfigureMode()) {
         $product->setConfigureMode($params->getConfigureMode());
     }
     $this->_eventManager->dispatch('catalog_controller_product_view', ['product' => $product]);
     $this->_catalogSession->setLastViewedProductId($product->getId());
     $this->initProductLayout($resultPage, $product, $params);
     if ($controller instanceof \Magento\Catalog\Controller\Product\View\ViewInterface) {
         $resultPage->getLayout()->initMessages($this->messageGroups);
     } else {
         throw new \Magento\Framework\Exception\LocalizedException(__('Bad controller interface for showing product'));
     }
     return $this;
 }
Example #2
0
 /**
  * Prepares product view page - inits layout and all needed stuff
  *
  * $params can have all values as $params in \Magento\Catalog\Helper\Product - initProduct().
  * Plus following keys:
  *   - 'buy_request' - \Magento\Framework\Object holding buyRequest to configure product
  *   - 'specify_options' - boolean, whether to show 'Specify options' message
  *   - 'configure_mode' - boolean, whether we're in Configure-mode to edit product configuration
  *
  * @param int $productId
  * @param \Magento\Framework\App\Action\Action $controller
  * @param null|\Magento\Framework\Object $params
  *
  * @return \Magento\Catalog\Helper\Product\View
  * @throws \Magento\Framework\Model\Exception
  */
 public function prepareAndRender($productId, $controller, $params = null)
 {
     // Prepare data
     $productHelper = $this->_catalogProduct;
     if (!$params) {
         $params = new \Magento\Framework\Object();
     }
     // Standard algorithm to prepare and render product view page
     $product = $productHelper->initProduct($productId, $controller, $params);
     if (!$product) {
         throw new \Magento\Framework\Model\Exception(__('Product is not loaded'), $this->ERR_NO_PRODUCT_LOADED);
     }
     $buyRequest = $params->getBuyRequest();
     if ($buyRequest) {
         $productHelper->prepareProductOptions($product, $buyRequest);
     }
     if ($params->hasConfigureMode()) {
         $product->setConfigureMode($params->getConfigureMode());
     }
     $this->_eventManager->dispatch('catalog_controller_product_view', array('product' => $product));
     $this->_catalogSession->setLastViewedProductId($product->getId());
     $this->initProductLayout($product, $controller, $params);
     if ($controller instanceof \Magento\Catalog\Controller\Product\View\ViewInterface) {
         $this->_view->getLayout()->initMessages($this->messageGroups);
     } else {
         throw new \Magento\Framework\Model\Exception(__('Bad controller interface for showing product'), $this->ERR_BAD_CONTROLLER_INTERFACE);
     }
     $this->_view->renderLayout();
     return $this;
 }
Example #3
0
 /**
  * Prepares product view page - inits layout and all needed stuff
  *
  * $params can have all values as $params in \Magento\Catalog\Helper\Product - initProduct().
  * Plus following keys:
  *   - 'buy_request' - \Magento\Framework\DataObject holding buyRequest to configure product
  *   - 'specify_options' - boolean, whether to show 'Specify options' message
  *   - 'configure_mode' - boolean, whether we're in Configure-mode to edit product configuration
  *
  * @param \Magento\Framework\View\Result\Page $resultPage
  * @param int $productId
  * @param \Magento\Framework\App\Action\Action $controller
  * @param null|\Magento\Framework\DataObject $params
  * @throws \Magento\Framework\Exception\LocalizedException
  * @throws \Magento\Framework\Exception\NoSuchEntityException
  * @return \Magento\Catalog\Helper\Product\View
  */
 public function prepareAndRender(ResultPage $resultPage, $productId, $controller, $params = null)
 {
     /**
      * Remove default action handle from layout update to avoid its usage during processing of another action,
      * It is possible that forwarding to another action occurs, e.g. to 'noroute'.
      * Default action handle is restored just before the end of current method.
      */
     $defaultActionHandle = $resultPage->getDefaultLayoutHandle();
     $handles = $resultPage->getLayout()->getUpdate()->getHandles();
     if (in_array($defaultActionHandle, $handles)) {
         $resultPage->getLayout()->getUpdate()->removeHandle($resultPage->getDefaultLayoutHandle());
     }
     if (!$controller instanceof \Magento\Catalog\Controller\Product\View\ViewInterface) {
         throw new \Magento\Framework\Exception\LocalizedException(__('Bad controller interface for showing product'));
     }
     // Prepare data
     $productHelper = $this->_catalogProduct;
     if (!$params) {
         $params = new \Magento\Framework\DataObject();
     }
     // Standard algorithm to prepare and render product view page
     $product = $productHelper->initProduct($productId, $controller, $params);
     if (!$product) {
         throw new \Magento\Framework\Exception\NoSuchEntityException(__('Product is not loaded'));
     }
     $buyRequest = $params->getBuyRequest();
     if ($buyRequest) {
         $productHelper->prepareProductOptions($product, $buyRequest);
     }
     if ($params->hasConfigureMode()) {
         $product->setConfigureMode($params->getConfigureMode());
     }
     $this->_eventManager->dispatch('catalog_controller_product_view', ['product' => $product]);
     $this->_catalogSession->setLastViewedProductId($product->getId());
     if (in_array($defaultActionHandle, $handles)) {
         $resultPage->addDefaultHandle();
     }
     $this->initProductLayout($resultPage, $product, $params);
     return $this;
 }