2016-04-15 6 views
0

Ist es möglich, Magentos 2 add to cart form in einem benutzerdefinierten Modul wieder zu verwenden? Ich habe alle Kinderprodukte aktuellen Produkt in Tab und ich möchte, damit die Kunden den Warenkorb Produkte hinzufügen, damit das ist, wie mein Code in diesem Zustand siehtMagento2 Wiederverwendung in den Warenkorb legen Formularvorlage

<?php 
if ($currentProduct = $block->getCurrentProduct()) { 
    $variants = $block->getVariants($currentProduct); 
    if($variants) { ?> 
     <ul id="product-variants"> 
     <?php foreach ($variants as $_product) : ?> 
      <li> 
       <form> 
        <?php echo $_product->getName(); ?> 
        SKU: <?php echo $_product->getSku(); ?> 
        Brutto: <?php echo $_product->getPrice(); ?> 

        <input type="text" placeholder="Stück"> 
        <button>Add to cart</button> 

       </form> 
      </li> 
     <?php endforeach; ?> 
     </ul> 
    <?php }; 
    } 
?> 

Antwort

0

Sie Schaltfläche in benutzerdefinierten phtml Datei hinzufügen können, wie folgt, ich habe dies in benutzerdefinierten Modul getan

in dem Block Datei

use Magento\Catalog\Block\Product\ListProduct; 
<?php 
public function __construct(
     \Magento\Backend\Block\Template\Context $context, 
     \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory, 
     \Magento\Catalog\Block\Product\ListProduct $listProductBlock, 
     array $data = [] 
    ) { 
     parent::__construct($context, $data); 
     $this->_productCollectionFactory = $productCollectionFactory; 
     $this->listProductBlock = $listProductBlock; 
    } 

public function getProductCollection() 
{ 
    /** @var $collection \Magento\Catalog\Model\ResourceModel\Product\Collection */ 
    $collection = $this->_productCollectionFactory->create()->addAttributeToSelect('*')->load(); 
    return $collection; 
} 
public function getAddToCartPostParams($product) 
{ 
    return $this->listProductBlock->getAddToCartPostParams($product); 
} 
?> 

get Produktliste im view-Datei

<?php 
const PARAM_NAME_BASE64_URL = 'r64'; 
const PARAM_NAME_URL_ENCODED = 'uenc'; 
use Magento\Framework\App\Action\Action; 
$_productCollection = $block->getProductCollection(); 
?> 
<?php foreach ($_productCollection as $_product): ?> 
    <?php $postParams = $block->getAddToCartPostParams($_product); ?> 
    <?php echo $_product->getName()?> 
    <form data-role="tocart-form" action="<?php /* @escapeNotVerified */ echo $postParams['action']; ?>" method="post"> 
     <input type="hidden" name="product" value="<?php /* @escapeNotVerified */ echo $postParams['data']['product']; ?>"> 
     <input type="hidden" name="<?php /* @escapeNotVerified */ echo Action::PARAM_NAME_URL_ENCODED; ?>" value="<?php /* @escapeNotVerified */ echo $postParams['data'][Action::PARAM_NAME_URL_ENCODED]; ?>"> 
     <?php echo $block->getBlockHtml('formkey')?> 
     <?php $storeManager = \Magento\Framework\App\ObjectManager::getInstance()->get('Magento\Store\Model\StoreManagerInterface'); ?> 
      <button type="submit" 
        title="<?php echo $block->escapeHtml(__('Add to Cart')); ?>" 
        class="action tocart primary"> 
       <span><?php /* @escapeNotVerified */ echo __('Add to Cart') ?></span> 
      </button> 
    </form> 
<?php endforeach;?> 
Verwandte Themen