Magento 2管理システム構成でテーブル設定を作成する方法は?


9

magento 1によると、「adminhtml / system_config_backend_serialized_array」から拡張して、次のようなテーブルを作成します。 ここに画像の説明を入力してください

私の質問は:magento 2でどのように作成するのですか?

編集:最後に、@ Mariusのヘルプを使用します。これは、System => Configuration => General => Design => Design ThemeのUser-Agent Exceptionsフィールドです。

ここに画像の説明を入力してください

このフィールドに基づいて、コード「Magento \ Config \ Block \ System \ Config \ Form \ Field \ Regexceptions」を調べることで、新しいテーブル構成を作成できます。


このmagento.stackexchange.com/questions/86147/を調べてください。助けになります
Bojjaiah

ありがとうございました。しかし、@ Mariusからの答えは私が必要とするものだと思います。
thienphucvx 2015

回答:


14

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

この管理構成テーブルの行をプログラムで作成する方法は?
アシュワニシュクラ

4

adminhtml/system_config_backend_serialized_arrayMagento 2のと同等ですMagento\Config\Model\Config\Backend\Serialized\ArraySerialized
例としてUser-Agent Exceptionsconfig のフィールドを使用して、それを複製してみることができます。
フィールドは、Magento/Backend/etc/adminhtml/system.xml


はい。それはまさに私が探しているものです。どうもありがとうございました。
thienphucvx 2015

こんにちは@marius、コード$ this-> addColumn( 'value'、['label' => __( 'Value')]);を使用してフィールドを追加しました。$ this-> addColumn( 'qty'、['label' => __( 'Qty')]); しかし、保存できず、コンソールフィールド(
qty
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.