AddToCartLink.php in Commerce Add To Cart Link 8        
                          
                  
                        
  
  
  
  
File
  src/AddToCartLink.php
  
    View source  
  <?php
namespace Drupal\commerce_add_to_cart_link;
use Drupal\commerce_product\Entity\ProductVariation;
use Drupal\commerce_product\Entity\ProductVariationInterface;
use Drupal\Core\Render\BubbleableMetadata;
use Drupal\Core\Url;
class AddToCartLink {
  
  protected $variation;
  
  public function __construct(ProductVariationInterface $variation) {
    $this->variation = $variation;
  }
  
  public static function fromVariationId($id) {
    if ($variation = ProductVariation::load($id)) {
      return new static($variation);
    }
    else {
      throw new \UnexpectedValueException('Can not load product variation: %s', $id);
    }
  }
  
  public function build() {
    $build = [
      '#theme' => 'commerce_add_to_cart_link',
      '#url' => $this
        ->url(),
      '#product_variation' => $this->variation,
    ];
    $metadata = $this
      ->metadata();
    $metadata
      ->applyTo($build);
    return $build;
  }
  
  public function url() {
    
    $cart_link_token_service = \Drupal::service('commerce_add_to_cart_link.token');
    return Url::fromRoute('commerce_add_to_cart_link.page', [
      'commerce_product' => $this->variation
        ->getProductId(),
      'commerce_product_variation' => $this->variation
        ->id(),
      'token' => $cart_link_token_service
        ->generate($this->variation),
    ]);
  }
  
  public function metadata() {
    
    $cart_link_token_service = \Drupal::service('commerce_add_to_cart_link.token');
    $contexts = $cart_link_token_service
      ->needsCsrfProtection() ? [
      'session',
    ] : [];
    return BubbleableMetadata::createFromRenderArray([
      '#cache' => [
        'contexts' => $contexts,
        'tags' => [
          'config:commerce_add_to_cart_link.settings',
        ],
      ],
    ]);
  }
}
 
Classes
        
  
  
      
      
         
      
                  | Name   | Description | 
    
    
          
                  | AddToCartLink | Defines a helper class for constructing add to cart links. |