Magento 2 วิธีสร้างการตั้งค่าตารางในการกำหนดค่าระบบ admin


9

ตาม magento 1 เราขยายจาก "adminhtml / system_config_backend_serialized_array" เพื่อสร้างตารางเช่นนี้: ป้อนคำอธิบายรูปภาพที่นี่

คำถามของฉันคือ: เราสร้างมันใน magento 2 ได้อย่างไร?

แก้ไข: สุดท้ายด้วยความช่วยเหลือของ @Marius: เป็นฟิลด์ข้อยกเว้นตัวแทนผู้ใช้ในระบบ => การกำหนดค่า => ทั่วไป => การออกแบบ => ธีมการออกแบบ

ป้อนคำอธิบายรูปภาพที่นี่

เราสามารถสร้างการกำหนดค่าตารางใหม่ตามฟิลด์นี้โดยดูที่รหัส "Magento \ Config \ Block \ System \ Config \ Form \ Field \ Regexceptions"


ดูmagento.stackexchange.com/questions/86147/นี้มันจะช่วยออกมาได้
Bojjaiah

ขอบคุณ. แต่ฉันคิดว่าคำตอบจาก @Marius คือสิ่งที่ฉันต้องการ
thienphucvx

คำตอบ:


15

คุณสามารถทำได้โดยใช้ Company / Modulename / etc / adminhtml / system.xml

ภายใต้ส่วน -> ฟิลด์กลุ่ม

<field id="mapping" translate="label comment tooltip" sortOrder="80" showInDefault="1" showInWebsite="1" showInStore="0">
    <label>Customer Fields Mapping</label>
    <frontend_model>Company\Modulename\Block\Adminhtml\System\Config\Form\Field\Customermap</frontend_model>
    <backend_model>Magento\Config\Model\Config\Backend\Serialized\ArraySerialized</backend_model>
    <comment>
        <![CDATA[Add the comments!]]>
    </comment>
    <tooltip>Map the magento customer field to custom module merge_fields</tooltip>
</field>

ในไฟล์โมเดลส่วนหน้าภายในบล็อก

<?php
namespace Company\Modulename\Block\Adminhtml\System\Config\Form\Field;

class Customermap extends \Magento\Config\Block\System\Config\Form\Field\FieldArray\AbstractFieldArray
{
    /**
     * @var \Magento\Framework\Data\Form\Element\Factory
     */
    protected $_elementFactory;

    /**
     * @param \Magento\Backend\Block\Template\Context $context
     * @param \Magento\Framework\Data\Form\Element\Factory $elementFactory
     * @param array $data
     */
    public function __construct(
        \Magento\Backend\Block\Template\Context $context,
        \Magento\Framework\Data\Form\Element\Factory $elementFactory,
        array $data = []
    )
    {
        $this->_elementFactory  = $elementFactory;
        parent::__construct($context,$data);
    }
    protected function _construct()
    {
        $this->addColumn('field1', ['label' => __('Field1')]);
        $this->addColumn('field2', ['label' => __('FIeld2')]);
        $this->_addAfter = false;
        $this->_addButtonLabel = __('Add');
        parent::_construct();
    }

}

คุณมีตารางแสดงผลในพื้นที่กำหนดค่าและหลังจากบันทึกค่าจะถูกบันทึกไว้ในcore_config_dataตาราง


มันทำงานได้ดี แต่เมื่อฉันบันทึกเหมือนมันจะแสดง<test> &lt;test2&gt;ข้อเสนอแนะใด ๆ
Bojjaiah

สวัสดีมีข้อสงสัยถ้าฉันต้องการเพิ่มกลุ่มอื่นที่ประกอบด้วยฟิลด์เดียวกันโมเดลส่วนหน้าโมเดลส่วนหลังที่คุณเพิ่มใน system.xml ของคุณแล้วฉันจะเพิ่มกลุ่มอื่นด้วยไฟล์ system.xml เดียวกันได้อย่างไร ในขณะที่เพิ่มกลุ่มใหม่ไม่ว่าจะโหลดเทมเพลตอย่างถูกต้องหรือไม่
Jaisa

@Rakesh Jesadiya โปรดดูและตอบคำถามmagento.stackexchange.com/questions/212229/ …
Jaisa

สวัสดี @rakesh Jesadiya ฉันได้เพิ่มเขตข้อมูลโดยใช้โค้ดด้านบน แต่ไม่สามารถบันทึกได้และมีข้อผิดพลาดในฟิลด์คอนโซล (จำนวน) ที่ไม่ได้กำหนดไว้
faizanbeg

วิธีสร้างแถวในตารางการกำหนดค่าผู้ดูแลระบบนี้โดยทางโปรแกรม
Ashwani Shukla

4

เทียบเท่าสำหรับadminhtml/system_config_backend_serialized_arrayในวีโอไอพี Magento\Config\Model\Config\Backend\Serialized\ArraySerialized2
คุณสามารถใช้ตัวอย่างฟิลด์User-Agent Exceptionsจากการกำหนดค่าและลองทำซ้ำ
ฟิลด์ถูกกำหนดในMagento/Backend/etc/adminhtml/system.xml


ใช่. มันคือสิ่งที่ฉันกำลังมองหา ขอบคุณมาก.
thienphucvx

สวัสดี @marius ฉันได้เพิ่มฟิลด์โดยใช้รหัส $ this-> addColumn ('value', ['label' => __ ('Value')]); $ this-> addColumn ('qty', ['label' => __ ('Qty')]); แต่ไม่สามารถบันทึกได้และมีข้อผิดพลาดในฟิลด์คอนโซล (qty) ไม่ได้ถูกกำหนดโปรดช่วย
faizanbeg
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.