Magento 2 adminhtml - 自定义块提供空白页

时间:2016-10-19 07:09:08

标签: magento2 adminhtml

我正在创建一个后端magento 2模块,当我在布局文件中指定一个自定义块时,它将显示一个空白页面,并将其添加到system.log

  

[2016-10-19 07:35:35] main.INFO:具有合并布局的缓存文件:LAYOUT_adminhtml_STORE1_32fdcd7fcff058e6f791ea5b6050bd6b5并处理默认值,widget_selectwidget_index:请更正XML数据并重试。 [] [] [2016-10-19 07:35:35] main.INFO:具有合并布局的缓存文件:LAYOUT_adminhtml_STORE1_3a2e4822a98337283e39f7b60acf85ec9并处理空:请更正XML数据并重试。 [] [] [2016-10-19 07:35:35] main.CRITICAL:破坏参考:'logo'元素不能作为子元素添加到'header',因为后者不存在[] [] [ 2016-10-19 07:35:35] main.CRITICAL:破坏参考:'global.search'元素不能作为子元素添加到'header',因为后者不存在[] [] [2016-10 -19 07:35:35] main.CRITICAL:破坏的引用:'user'元素不能作为子元素添加到'header',因为后者不存在[] []

....等等等......

  

[2016-10-19 07:35:35] main.CRITICAL:破碎的引用:'header.inner.right'尝试将自己重新排序为'header.inner.left',但他们的父母不同:'标题'和''分别。 [] [] [2016-10-19 07:35:35] main.CRITICAL:破解参考:'global.search'试图将自己重新排序为'notification.messages',但他们的父母是不同的:'header.inner .right'和''分别。 [] [] [2016-10-19 07:35:35] main.INFO:具有合并布局的缓存文件:LAYOUT_adminhtml_STORE1_36f1b068ec7ccf4878f9284dd1137afd1并处理catalog_product_prices:请更正XML数据并重试。 [] []

如果我将我的块类指定为class =“Magento \ Backend \ Block \ Template”,那么它将显示具有正确模板的页面,这使我认为模板或模块的其余部分没有问题

这是块(app / code / Vendor / Widget / Block / Adminhtml / SelectWidgetBlock.php):

namespace Vendor\Widget\Block\Adminhtml;
use Magento\Backend\Block\Template;

class SelectWidgetBlock extends Template
{
    public function __construct(Template\Context $context, array $data = []) 
    {
        parent::__construct($context, $data);
    }

    public function greet()
    {
        return 'Hello world';
    }
}

这是布局文件(app / code / Vendor / Widget / view / adminhtml / layout / widget_selectwidget_index.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" layout="empty">
<head>
    <title>
        Widget
    </title>
</head>
<body>
    <referenceContainer name="content">
        <block class="Vendor\Widget\Block\Adminhtml\SelectWidgetBlock" name="vendor_widget.select" template="Vendor_Widget::selectwidget.phtml"/>
    </referenceContainer>
</body>

现在是phtml(app / code / Vendor / Widget / view / adminhtml / templates / selectwidget.phtml):

<p>Here is the phtml file</p>

<?php echo $this->greet() ?>

以下是控件以防万一(app / code / Vendor / Widget / Controller / Adminhtml / SelectWidget / Index.php):

namespace Vendor\Widget\Controller\Adminhtml\SelectWidget;

class Index extends \Magento\Backend\App\Action
{
    protected $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()
    {
        return  $resultPage = $this->resultPageFactory->create();
    }
}

如果您有任何想法,请!

1 个答案:

答案 0 :(得分:0)

我通过从布局文件中删除layout="empty"解决了我的问题。