commercetools-8.x-1.2-alpha1/modules/commercetools_content/src/Controller/CommercetoolsProductController.php

modules/commercetools_content/src/Controller/CommercetoolsProductController.php
<?php

namespace Drupal\commercetools_content\Controller;

use Drupal\commercetools\CommercetoolsProducts;
use Drupal\commercetools_content\Form\AddToCartForm;
use Drupal\Core\Controller\ControllerBase;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpFoundation\Request;

/**
 * Defines a controller for the Commercetools product pages.
 */
class CommercetoolsProductController extends ControllerBase {

  /**
   * The commercetools products service.
   *
   * @var \Drupal\commercetools\CommercetoolsProducts
   */
  protected CommercetoolsProducts $ctProducts;

  /**
   * The form builder.
   *
   * @var \Drupal\Core\Form\FormBuilderInterface
   */
  protected $formBuilder;

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container) {
    $instance = parent::create($container);
    $instance->ctProducts = $container->get('commercetools.products');
    $instance->formBuilder = $container->get('form_builder');
    return $instance;
  }

  /**
   * Displays a page with the details of a Commercetools product.
   *
   * @param string $slug
   *   The slug value of the product to search.
   * @param \Symfony\Component\HttpFoundation\Request $request
   *   The request object.
   *
   * @return array
   *   An array containing the output for the product page.
   */
  public function view(string $slug, Request $request): array {
    $productDetailsCacheable = $this->ctProducts->getProductBySlug($slug);
    $productDetails = $productDetailsCacheable->getData();
    $productDetails['current_sku'] = $request->query->get('sku');

    $output = [
      '#title' => $productDetails['name'],
      'form' => $this->formBuilder->getForm(AddToCartForm::class, $productDetails, 'full'),
    ];
    $cache = $productDetailsCacheable->getCacheableMetadata();
    $cache->addCacheContexts(['languages:language_content']);
    $cache->applyTo($output);
    return $output;
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc