Grid Magento 2网格结构

Grid Magento 2网格结构,grid,magento2,Grid,Magento2,我已经开始研究Magento 2网格。我开发了一个简单的模块,但我不了解网格的结构 在Magento 1.9.X中,添加网格的方法很明确,但在Magento 2中,结构有所不同。如何在Magento 2中添加网格?在Magento 2中,您可以通过XML创建网格(请参阅) 但是,您可以通过PHP创建网格,如Magento 1:将网格类扩展为“Magento\Backend\Block\Widget\grid\Extended” 在Magento 2中,您可以通过XML创建网格(请参阅) 但是,您

我已经开始研究Magento 2网格。我开发了一个简单的模块,但我不了解网格的结构


在Magento 1.9.X中,添加网格的方法很明确,但在Magento 2中,结构有所不同。如何在Magento 2中添加网格?

在Magento 2中,您可以通过XML创建网格(请参阅)

但是,您可以通过PHP创建网格,如Magento 1:将网格类扩展为“Magento\Backend\Block\Widget\grid\Extended”


在Magento 2中,您可以通过XML创建网格(请参阅)

但是,您可以通过PHP创建网格,如Magento 1:将网格类扩展为“Magento\Backend\Block\Widget\grid\Extended”


最佳实践是通过UI组件(xml)创建所有网格


查看Magento_目录模块并找到product_form.xml。

最佳做法是通过UI组件(xml)创建所有网格


查看Magento_目录模块并找到product_form.xml。

现在,在adminhtml中添加网格的首选方法是使用ui组件

现在使用它是最好的方法的原因是,当您将它添加为ui组件时,可以使用很多magento 2后端功能

但是,有多种方法可以添加此功能。 为了不重复stackoverflow中的答案和大量代码,我找到了一个mageplaza解释,它解释了网格的创建

您还可以参考magento 2文档,了解可以在ui组件中使用的其他组件:


您可以在网格中创建多个现有组件,也可以创建自己的组件。Aldo complex它们在设置时提供了很大的灵活性。当您创建一对网格时,您将了解它们是如何工作的,并且能够轻松地使用它们。

现在,在adminhtml中添加网格的首选方法是使用ui组件

现在使用它是最好的方法的原因是,当您将它添加为ui组件时,可以使用很多magento 2后端功能

但是,有多种方法可以添加此功能。 为了不重复stackoverflow中的答案和大量代码,我找到了一个mageplaza解释,它解释了网格的创建

您还可以参考magento 2文档,了解可以在ui组件中使用的其他组件:


您可以在网格中创建多个现有组件,也可以创建自己的组件。Aldo complex它们在设置时提供了很大的灵活性。当您创建一对时,您将了解它们是如何工作的,并且能够轻松地使用它们。

1:create controller Index.php

 <?php

 namespace Ced\Abhinay\Controller\Adminhtml\Account;

 class Index extends \Magento\Backend\App\Action {

 /**
 * @var bool|\Magento\Framework\View\Result\PageFactory
 */
 protected $resultPageFactory = false;

 /**
 * Index constructor.
 * @param \Magento\Backend\App\Action\Context $context
 * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
 */

 public function __construct(
    \Magento\Backend\App\Action\Context $context,
    \Magento\Framework\View\Result\PageFactory $resultPageFactory
 )
 {
    parent::__construct($context);
    $this->resultPageFactory = $resultPageFactory;
 }

 public function execute()
 {
    $resultPage = $this->resultPageFactory->create();
    $resultPage->getConfig()->getTitle()->prepend((__('Ced Abhinay')));

    return $resultPage;
 }

 }

3.然后创建文件ListGrid.php

<?php
  namespace Ced\Abhinay\Block\Adminhtml\Account;

  class ListGrid extends \Magento\Backend\Block\Widget\Grid\Container {

  /**
  * Class ListGrid extends parent constructor \Magento\Backend\Block     \Widget\Grid
 */
 protected function _construct()
 {
    $this->_controller = 'account_index';
    $this->_blockGroup = 'Ced_Abhinay';
    $this->_addButtonLabel = __('Ced Test');
    parent::_construct();
 }
 }

1:Create controller Index.php

 <?php

 namespace Ced\Abhinay\Controller\Adminhtml\Account;

 class Index extends \Magento\Backend\App\Action {

 /**
 * @var bool|\Magento\Framework\View\Result\PageFactory
 */
 protected $resultPageFactory = false;

 /**
 * Index constructor.
 * @param \Magento\Backend\App\Action\Context $context
 * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
 */

 public function __construct(
    \Magento\Backend\App\Action\Context $context,
    \Magento\Framework\View\Result\PageFactory $resultPageFactory
 )
 {
    parent::__construct($context);
    $this->resultPageFactory = $resultPageFactory;
 }

 public function execute()
 {
    $resultPage = $this->resultPageFactory->create();
    $resultPage->getConfig()->getTitle()->prepend((__('Ced Abhinay')));

    return $resultPage;
 }

 }

3.然后创建文件ListGrid.php

<?php
  namespace Ced\Abhinay\Block\Adminhtml\Account;

  class ListGrid extends \Magento\Backend\Block\Widget\Grid\Container {

  /**
  * Class ListGrid extends parent constructor \Magento\Backend\Block     \Widget\Grid
 */
 protected function _construct()
 {
    $this->_controller = 'account_index';
    $this->_blockGroup = 'Ced_Abhinay';
    $this->_addButtonLabel = __('Ced Test');
    parent::_construct();
 }
 }

<?php

namespace Ced\Abhinay\Block\Adminhtml\Account\Grid;

class Grid extends \Magento\Backend\Block\Widget\Grid\Extended {

/** @var \Ced\Abhinay\Model\ListModel */
protected $listModelData;

/**
 * Grid constructor.
 * @param \Magento\Backend\Block\Template\Context $context
 * @param \Magento\Backend\Helper\Data $backendHelper
 * @param \Ced\Abhinay\Model\ListModel $listModelData
 * @param array $data
 */

public function __construct(
    \Magento\Backend\Block\Template\Context $context,
    \Magento\Backend\Helper\Data $backendHelper,
    \Ced\Abhinay\Model\ListModel $listModelData,
    array $data = []
) {
    parent::__construct($context, $backendHelper, $data);
    $this->listModelData = $listModelData;
}

protected function _construct()
{
    parent::_construct();
    $this->setId('list_grid');
    $this->setDefaultSort('list_id');
    $this->setDefaultDir('DESC');
    $this->isAjax('true');
}

protected function _prepareCollection()
{
    $collection = $this->listModelData->getCollection();
    $this->setCollection($collection);

    return parent::_prepareCollection();
}

protected function _prepareColumns()
{
    $this->addColumn(
        'post_id',
        [
            'header' => __('ID'),
            'sortable' => true,
            'index' => 'post_id',
            'type' => 'number',
            'header_css_class' => 'col-id',
            'column_css_class' => 'col-id'
        ]
    );
    $this->addColumn(
        'title',
        [
            'header' => __('Name'),
            'index' => 'name',
            'header_css_class' => 'col-name',
            'column_css_class' => 'col-name'
        ]
    );
    $this->addColumn(
        'position',
        [
            'header' => __('Position'),
            'name' => 'position',
            'width' => 60,
            'type' => 'number',
            'validate_class' => 'validate-number',
            'index' => 'position',
            'editable' => true,
        ]
    );

    return parent::_prepareColumns();
}
}