Пользовательская администрация сетки не рендеринга в Magento 2

magento.stackexchange https://magento.stackexchange.com//questions/93449

Вопрос

Я пытаюсь отобразить сетку (только для чтения только для того, чтобы представить цель, это не позволит редактировать или удалять).Мой модуль вызывает и заголовок также отображается на панели администратора, но сетка не отображается.

Даже если я также не получаю никаких ошибок.

Мой код:

<Сильное> Учеба / тест / контроллер / adminhtml / test / index.php

<?php
namespace Learning\Test\Controller\Adminhtml\Test;

use Magento\Backend\App\Action\Context;
use Magento\Framework\View\Result\PageFactory;

class Index extends \Magento\Backend\App\Action
{
    const ADMIN_RESOURCE = 'Learning_Test::test';

    /**
     * @var PageFactory
     */
    protected $resultPageFactory;

    /**
     * @param Context $context
     * @param PageFactory $resultPageFactory
     */
    public function __construct(
        Context $context,
        PageFactory $resultPageFactory
    ) {
        parent::__construct($context);
        $this->resultPageFactory = $resultPageFactory;
    }

    /**
     * Index action
     *
     * @return \Magento\Backend\Model\View\Result\Page
     */
    public function execute()
    {
        /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
    $resultPage = $this->resultPageFactory->create();
    $resultPage->setActiveMenu('Learning_Test::test');
    $resultPage->addBreadcrumb(__('Test'), __('Test'));
    $resultPage->addBreadcrumb(__('Manage Test'), __('Manage Test'));
    $resultPage->getConfig()->getTitle()->prepend(__('Test'));
    $resultPage->addContent(
        $resultPage->getLayout()->createBlock('Learning\Test\Block\Adminhtml\Grid')
    );
    return $resultPage;
    }
}
.

<Сильное> Учебное / тестовое / блок / adminhtml / grid.php

<?php
namespace Learning\Test\Block\Adminhtml;


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

    /**
 * @return void
 */
protected function _construct()
{
    $this->_controller = 'adminhtml_grid';
    $this->_blockGroup = 'Learning_Test';
    $this->_headerText = __('Custom Grid');
    parent::_construct();
    $this->removeButton('add');
}

}
.

<Сильное> Учиться / тест / блок / adminhtml / grid / grid.php

<?php
namespace Learning\Test\Block\Adminhtml\Grid;

use Magento\Store\Model\Store;

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

    /**
 * @var \Learning\Test\Model\ResourceModel\Info\CollectionFactory
 */
protected $_collectionFactory;

/**
 * @param \Magento\Backend\Block\Template\Context $context
 * @param \Magento\Backend\Helper\Data $backendHelper
 * @param \Learning\Test\Model\ResourceModel\Info\CollectionFactory
 * @param array $data
 */
public function __construct(
    \Magento\Backend\Block\Template\Context $context,
    \Magento\Backend\Helper\Data $backendHelper,
    \Learning\Test\Model\ResourceModel\Info\CollectionFactory $collectionFactory,
    array $data = []
) {
    $this->_collectionFactory = $collectionFactory;
    parent::__construct($context, $backendHelper, $data);
}

/**
 * @return void
 */
protected function _construct()
{
    parent::_construct();
    $this->setId('learningGrid');
    $this->setDefaultSort('id');
    $this->setDefaultDir('ASC');
}

/**
 * Prepare grid collection object
 *
 * @return $this
 */
protected function _prepareCollection()
{
    $collection = $this->_collectionFactory->create();
    $this->setCollection($collection);

    return parent::_prepareCollection();
}

/**
 * Prepare default grid column
 *
 * @return $this
 */
protected function _prepareColumns()
{
    parent::_prepareColumns();

    $this->addColumn(
        'id',
        [
            'header' => __('ID'),
            'type' => 'number',
            'index' => 'id',
            'header_css_class' => 'col-id',
            'column_css_class' => 'col-id'
        ]
    );

    return $this;
}
}
.

<Сильные> Учебные / тест / Просмотр / adminhtml / layout / test_test_index.xml

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-2columns-left" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <update handle="styles"/>
    <body>
        <referenceContainer name="content">
            <block class="Learning\Test\Block\Adminhtml\Grid"
                   name="test_grid_listing" />
        </referenceContainer>
    </body>
</page>
.

см. Ниже экран выстрел также.

 Введите описание изображения здесь

Не могли бы вы решить мою проблему?где я пошел не так?

Это было полезно?

Решение

Ваш контроллер Execute Site Likes Likes

/**
     * Index action
     *
     * @return \Magento\Backend\Model\View\Result\Page
     */
    public function execute()
    {
        /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
        $resultPage = $this->resultPageFactory->create();
        $resultPage->setActiveMenu('Learning_Test::test');
        $resultPage->addBreadcrumb(__('Test'), __('Test'));
        $resultPage->addBreadcrumb(__('Manage Test'), __('Manage Test'));
        $resultPage->getConfig()->getTitle()->prepend(__('Test'));
        $resultPage->addContent(
            $resultPage->getLayout()->createBlock('Learning\Test\Block\Adminhtml\Grid')
        );
        return $resultPage;
    }
.
app/code/Learning/Test/Block/Adminhtml/Grid.php
.

выглядит как

namespace Learning\Test\Block\Adminhtml;

class Grid  extends \Magento\Backend\Block\Widget\Grid\Container
{
    /**
     * @return void
     */
    protected function _construct()
    {
        $this->_controller = 'adminhtml_grid';
        $this->_blockGroup = 'Learning_Test';
        $this->_headerText = __('Custom Grid');
        parent::_construct();
        $this->removeButton('add');
    }
}
.
app/code/Learning/Test/Block/Adminhtml/Grid/Grid.php
.
namespace Learning\Test\Block\Adminhtml\Grid;

class Grid extends \Magento\Backend\Block\Widget\Grid\Extended
{
    /**
     * @var \Learning\Test\Model\ResourceModel\Info\CollectionFactory
     */
    protected $_collectionFactory;

    /**
     * @param \Magento\Backend\Block\Template\Context $context
     * @param \Magento\Backend\Helper\Data $backendHelper
     * @param \Learning\Test\Model\ResourceModel\Info\CollectionFactory
     * @param array $data
     */
    public function __construct(
        \Magento\Backend\Block\Template\Context $context,
        \Magento\Backend\Helper\Data $backendHelper,
        \Learning\Test\Model\ResourceModel\Info\CollectionFactory $collectionFactory,
        array $data = []
    ) {
        $this->_collectionFactory = $collectionFactory;
        parent::__construct($context, $backendHelper, $data);
    }

    /**
     * @return void
     */
    protected function _construct()
    {
        parent::_construct();
        $this->setId('learningGrid');
        $this->setDefaultSort('id');
        $this->setDefaultDir('ASC');
    }

    /**
     * Prepare grid collection object
     *
     * @return $this
     */
    protected function _prepareCollection()
    {
        $collection = $this->_collectionFactory->create();
        $this->setCollection($collection);

        return parent::_prepareCollection();
    }

    /**
     * Prepare default grid column
     *
     * @return $this
     */
    protected function _prepareColumns()
    {
        parent::_prepareColumns();

        $this->addColumn(
            'id',
            [
                'header' => __('ID'),
                'type' => 'number',
                'index' => 'id',
                'header_css_class' => 'col-id',
                'column_css_class' => 'col-id'
            ]
        );

        return $this;
    }
}
.

Другие советы

В моем случае сетка не регларила из-за неправильного закрытого XML-тега

<?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="adminhtml_concorcommon_advanced_syslog_grid/">  <!-- notice here, improper tag closing -->
    <body>
        <referenceContainer name="content">
            <block class="Concor\Common\Block\Adminhtml\Advanced\Syslog\Grid" name="common.advanced.syslog"/>
        </referenceContainer>
    </body>
</page>
.

После правильной закрытия пояснимой сетки тегов.

<?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="adminhtml_concorcommon_advanced_syslog_grid"/>
    <body>
        <referenceContainer name="content">
            <block class="Concor\Common\Block\Adminhtml\Advanced\Syslog\Grid" name="common.advanced.syslog"/>
        </referenceContainer>
    </body>
</page>
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top