我是Magento的新手
我得到这个模板,我不想分成多个块。我只想在不同的情况下呈现页面(不仅如此,我以后可以尝试理解这些内容)。当我找到一些网址时。
例如,转到/route/controller/action
应该会显示我从<HTML>
写到</HTML>
的html页面(当然包括HEAD和BODY)。
所以我读了几件事。我遵循了一些官方教程,可以创建一个模块和一个Action来呈现JSON。工作良好!转到/ test / page / view显示一个愚蠢的json。现在我想做一些类似于渲染页面的事情(并最终将参数传递给它)
(http://devdocs.magento.com/videos/fundamentals/create-a-new-module/)
所以这就是我现在所能得到的:
/Vendor/Module/etc/frontend/routes.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
<router id="standard">
<route id="victor" frontName="test">
<module name="Victor_Template" />
</route>
</router>
</config>
/Vendor/Module/Controller/Page/View.php
namespace Victor\Template\Controller\Page;
use \Magento\Backend\App\Action\Context;
use \Magento\Framework\App\Action\Action;
use \Magento\Framework\Controller\Result\JsonFactory;
use \Magento\Framework\View\Result\PageFactory;
class View extends Action
{
protected $resultPageFactory;
function __construct(Context $context, PageFactory $resultPageFactory){
$this->resultPageFactory = $resultPageFactory;
parent::__construct($context);
}
public function execute(){
return $this->resultPageFactory->create();
}
}
... / view / frontend / layout / template_page_view.xml (可能错误在这里)
<?xml version="1.0" ?>
<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceContainer name="content">
<block class="Victor\Template\Block\Page\View" name="page.view" template="Victor_Template::page/view.phtml"/>
</referenceContainer>
</body>
</page>
... / view / frontend / templates / page / view.phtml
<h1>Hello World!</h1>
清理缓存,刷新缓存,提供权限和升级设置(我必须在代码中发生某些变更时),我得到一个HTTP代码200,它给了我一个空白(完全白色)Magento页面它包含对css,javascript文件的引用以及类似这样的奇怪:
<body data-container="body" data-mage-init='{"loaderAjax": {}, "loader": { "icon": "http://localhost/magento/pub/static/version1490812084/frontend/Magento/luma/en_US/images/loader-2.gif"}}' class="victor-page-view page-layout-admin-1column">
无论如何,我不知道后台发生了什么。有些东西告诉我错误是布局的定义(template_page_view
)
我尝试在视图中echo
方法的return
之前使用execute()
,但它没有显示,exit
也不会停止要呈现的magento黑/白页。
我希望回复只是<h1>Hwllo World!</h1>
。
我做错了什么,在Magento上做这件事的正确方法是什么?
@edit
好吧似乎有很多缓存问题。现在echo
和exit
有效。但我仍然没有得到Hello world
答案 0 :(得分:0)
这不容易,但试试这个:
1)在你的布局xml文件(view/frontend/layout/template_page_view.xml
)中:
<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="empty" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceContainer name="top.container" remove="true" />
<referenceContainer name="top.container" remove="true" />
<referenceContainer name="page.bottom.container" remove="true"/>
<referenceContainer name="before.body.end" remove="true"/>
<referenceContainer name="after.body.start" remove="true"/>
<referenceContainer name="footer" remove="true" />
<referenceContainer name="footer-container" remove="true" />
<referenceContainer name="global.notices" remove="true" />
<referenceContainer name="content">
<block class="Victor\Template\Block\Page\View" name="page.view" template="Victor_Template::page/view.phtml"/>
</referenceContainer>
</body>
</page>
您可能需要添加更多容器才能删除,具体取决于您的主题和任何其他第三方模块
2)在您的控制器中创建Page
对象,如下所示:
return $this->resultPageFactory->create(false, ['template' => 'Vendrom_Module::blank.phtml']);
3)最后创建文件../view/frontend/blank.phtml
<!doctype html>
<html>
<body>
<?php /* @escapeNotVerified */ echo $layoutContent ?>
</body>
</html>