Ich möchte eine Administratorkonfiguration mit einer Tabelle erstellen, um die Daten zu übernehmen und in der Konfiguration zu speichern, für die ich diesem Link gefolgt bin .
Ich möchte aber auch programmgesteuert und auch ohne die letzte Aktionsspalte und die Schaltfläche zum Hinzufügen benutzerdefinierte Zeilen in dieser Tabelle erstellen. Bitte beziehen Sie sich auf das Bild
Ich konnte im Web keine Lösung für dieselbe oder die Datei finden
\ Magento \ Config \ Block \ System \ Config \ Form \ Field \ FieldArray \ AbstractFieldArraydass wir verlängern, gab keine Hinweise.
Hätte dies leicht über jquery tun können, möchte aber die Standardlösung implementieren.
Code:
<?php
namespace Abc\Paymentmethod\Block\Adminhtml\System\Config\Form\Field;
class Feetable 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('noi', ['label' => __('NOI'),'readonly'=>'readonly']);
$this->addColumn('fixed', ['label' => __('Fixed')]);
$this->addColumn('percent', ['label' => __('Percent')]);
$this->_addAfter = false;
$this->_addButtonLabel = __('Add More');
parent::_construct();
}
protected function _prepareArrayRow(\Magento\Framework\DataObject $row) {
$options = [1,2,3];
$row->setData('option_extra_attrs', $options);
}
}
system.xml
<field id="abc_fee_table" translate="label comment tooltip" sortOrder="17.4" showInDefault="1" showInWebsite="1" showInStore="0">
<label>Abc Fee by Number of Installments(NOI)</label>
<frontend_model>Abc\Paymentmethod\Block\Adminhtml\System\Config\Form\Field\Feetable</frontend_model>
<backend_model>Magento\Config\Model\Config\Backend\Serialized\ArraySerialized</backend_model>
</field>
magento2
magento-2.1
Ashwani Shukla
quelle
quelle
Antworten:
Sie müssen diesen Code wie folgt in system.xml einfügen:
Bitte fügen Sie einen benutzerdefinierten Serializer hinzu
Admin benutzerdefiniert abgelegt
quelle