Magento 2: วิธีการแสดงตัวเลือกที่กำหนดเองในไฟล์ phtml อื่น


14

เราจะแทนที่ตำแหน่งนี้ในตัวเลือกที่กำหนดเองเพื่อแสดงในไฟล์ phtml อื่นได้อย่างไร ป้อนคำอธิบายรูปภาพที่นี่

เพิ่มรหัสนี้checkout_cart_index.xmlซึ่งแทนที่เท่านั้นform.phtmlไม่แทนที่default.phtmlไฟล์

  <?xml version="1.0"?>
  <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<!-- <update handle="checkout_cart_item_renderers"/> -->
<body>
    <referenceContainer name="content">
        <referenceBlock name="checkout.cart.form">
            <action method="setTemplate">
                <argument name="template" xsi:type="string">Bespoke_Bespoke::cart/form.phtml</argument>
            </action>
    </referenceBlock> 
     <referenceBlock name="checkout.cart.item.renderers.override">
    <action method="setTemplate">
        <argument name="template" xsi:type="string">Bespoke_Bespoke::cart/item/default.phtml</argument>
    </action>
</referenceBlock>
    </referenceContainer>
</body>

ฉันได้รับข้อผิดพลาดเกี่ยวกับcheckout.cart.item.renderersเด็กที่มีนามแฝงว่า 'ง่าย' ฉันได้แก้ไขไฟล์นั้นแล้วcheckout_cart_item_renderer.xml

 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<!-- <update handle="checkout_item_price_renderers"/> -->
<body>
  <referenceBlock name="checkout.cart.form">
<action method="setOverriddenTemplates">
    <argument xsi:type="array">
        <!-- list override templates -->
        <item name="default" xsi:type="string">Bespoke_Bespoke::cart/item/default.phtml</item>
        <item name="simple" xsi:type="string">Bespoke_Bespoke::cart/item/default.phtml</item>
        <item name="virtual" xsi:type="string">Bespoke_Bespoke::cart/item/default.phtml</item>
    </argument>
  </action>
  </referenceBlock>
</body>
</page>

เพื่อแทนที่ไฟล์ที่เราใช้ etc/di.xml

 <config  xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
   <preference for="Magento\Checkout\Block\Cart\AbstractCart" type="AGS\Bespoke\Block\Checkout\Cart\AbstractCart"/><preference for="Magento\Catalog\Block\Product\View\Option" type="AGS\Bespoke\Block\Product\View\Option"/>
   <preference for=" Magento\Checkout\Block\Cart" type="AGS\Bespoke\Block\Checkout\Cart"/>
   <preference for="\Magento\Checkout\Block\Cart\Item\Renderer" type="AGS\Bespoke\Block\Checkout\Cart\Item\Renderer"/>
   <virtualType name="AGS\Bespoke\Model\ResourceModel\Bespoke\Bespoke\Collection" type="Magento\Framework\View\Element\UiComponent\DataProvider\SearchResult">     
  <arguments><argument name="mainTable" xsi:type="string">ags_bespoke</argument><argument name="resourceModel" xsi:type="string">AGS\Bespoke\Model\ResourceModel\Bespoke</argument> 

  </arguments></virtualType><type name="Magento\Framework\View\Element\UiComponent\DataProvider\CollectionFactory">
<arguments><argument name="collections" xsi:type="array">
<item name="bespoke_record_bespoke_list_data_source" xsi:type="string">AGS\Bespoke\Model\ResourceModel\Bespoke\Bespoke\Collection</item>


ลบบล็อกในหน้ารายละเอียดผลิตภัณฑ์ เพิ่มในหน้าอื่น ๆ
Visakh B Sujathan

3
คุณพยายามทำอะไรให้สำเร็จ เพราะถูกต้องฉันถ้าฉันผิด แต่คุณต้องการตัวเลือกเพื่อให้สามารถเพิ่มสินค้าลงในรถเข็นตั้งแต่แรก คุณไม่สามารถเพิ่มผลิตภัณฑ์ที่มีตัวเลือกที่จำเป็นในรถเข็นก่อนและเลือกตัวเลือกในภายหลัง
Giel Berkers

คำตอบ:


5

ใส่รหัสในหน้า phtml อื่น ๆ ในชุดผลิตภัณฑ์

ตัวเลือก custome จะแสดงบนเมนูดร็อปดาวน์เลือกหลายรายการเลือก ฯลฯ ...

<?php
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$_productCollection = $block->getLoadedProductCollection();
?>
<?php foreach ($_productCollection as $_product): ?>
<?php
    $_product = $objectManager->create('Magento\Catalog\Model\Product')->load($_product->getId());
    $customOptions = $objectManager->get('Magento\Catalog\Model\Product\Option')->getProductOptionCollection($_product); 
?>
  <?php 
    foreach($customOptions as $option){
      $values = $option->getValues();
      if (empty($values)) { 
          continue;
      } ?>
      <div class="custome-option">
          <?php foreach($values as $value) :  ?>
              <span><?php echo $value->getTitle(); ?></span>
          <?php endforeach; ?>
      </div>
  <?php }; ?>
<?php endforeach; ?>

ได้รับข้อผิดพลาด: 1 ข้อยกเว้น: ข้อยกเว้น # 0 (ข้อยกเว้น): คำเตือน: อาร์กิวเมนต์ที่ไม่ถูกต้องถูกระบุสำหรับ foreach ()
akgola
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.