我正在创建一个后端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();
}
}
如果您有任何想法,请!
答案 0 :(得分:0)
我通过从布局文件中删除layout="empty"
解决了我的问题。