Magento 2 - Beispielmodul zeigt leere Seite an

7

Ich verwende Magento 2 Version Beta-1.0.0 und versuche, ein einfaches neues benutzerdefiniertes Modul zu erstellen. Das benutzerdefinierte Modul funktioniert, zeigt jedoch eine leere Seite zum Textinhalt an.

Das Modul wird wie folgt ausgeführt.

Ordnerstruktur: Hallo

-app
    -code
        -Magento
            -Hello
                -Block
                    --Hello.php
                -Controller
                    -Index
                        --Index.php
                -etc
                    --module.xml
                    -frontend
                        --routes.xml
                -view
                    -frontend
                        -layout
                            --hello_index_index.xml
                        -templates
                            --hello.phtml

Dateien sind wie folgt.

(1) app / code / Magento / Hallo / etc / module.xml

<?xml version="1.0" ?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Module/etc/module.xsd">
    <module name="Magento_Hello" setup_version="0.0.1"/>
</config>

(2) App / Code / Magento / Hallo / etc / Frontend / Routen.xml

<?xml version="1.0" ?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/App/etc/routes.xsd">
    <router id="standard">
        <route id="hello" frontName="hello">
            <module name="Magento_Hello"/>
        </route>
    </router>
</config>

(3) app / code / Magento / Hallo / Controller / Index / Index.php

class Index extends \Magento\Framework\App\Action\Action
{
    protected $resultPageFactory;

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

    public function execute()
    {
        return $this->resultPageFactory->create();
    }
}

(4) app / code / Magento / Hallo / Block / Hallo.php

<?php
namespace Magento\Hello\Block;

class Hello extends \Magento\Framework\View\Element\Template
{
    public function _prepareLayout()
    {
        return parent::_prepareLayout();
    }
}

(5) app / code / Magento / Hallo / Ansicht / Frontend / Layout / hello_index_index.xml

<?xml version="1.0" ?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
    <head>
        <title>Hello to Magento 2.0</title>
    </head>
    <body>
        <referenceContainer name="content">
            <block class="Magento\Hello\Block\Hello" name="hello" template="hello.phtml" />
        </referenceContainer>
    </body>
</page>

(6) app / code / Magento / Hallo / view / frontend / templates / hello.phtml

<?php echo "This is simple hello module on Magento 2.0"; ?>

Nach dem Erstellen des Moduls habe ich auch das Magento-Setup aktualisiert.

cd [magento2_root_folder_path]
php bin / magento setup: upgrade

Und wenn ich gehe

http: // localhost / magento2 / hello / index / index wird unter dem Tag "body" leer angezeigt . Ich bin sicher, dass das Modul ordnungsgemäß geladen wird, da das "head" -Tag mit dem Titel angezeigt wird.

Jede Hilfe wäre sehr dankbar.

Oshan
quelle
Sehen Sie auf einen Blick nichts Falsches. Leer nach einem Punkt deutet auf einen PHP-Fehler hin. Haben Sie die PHP-Fehlerprotokolle Ihres Servers überprüft? Oder versucht, die Fehleranzeige zu aktivieren?
Ryan Hoerr
@ Ryan: Ja, ich habe PHP-Fehlerprotokolle überprüft und dort wird nichts angezeigt. Aktivierte Fehleranzeige durch Hinzufügen von error_reporting (E_ALL) & ini_set ('display_errors', '1') in index.php. Es sind aber keine Fehler aufgetreten. Das Modul scheint zu funktionieren, da das <title> -Tag korrekt angezeigt wird, aber nichts unter dem <body> -Tag.
Oshan
Ist das die richtige Ordnerstruktur, weil Ihnen anscheinend eine Ebene zwischen Magento und Ihrer Modulstruktur fehlt? Wahrscheinlich nur ein Tippfehler, sollte aber in 'Hallo' enthalten sein.
Smartie
@ Smartie: Mein schlechtes. Ja, es war ein Tippfehler. Ich habe die Frage aktualisiert.
Oshan
1
Versuchen Sie, dies layout="2columns-left"auf dem pageKnoten in der hello_index_index.xmlDatei hinzuzufügen
Marius

Antworten:

17

Sie müssen das Layout für die Seite angeben.
Fügen Sie dies also layout="2columns-left"auf dem <page>Knoten in hinzu hello_index_index.xml.
Sie können auch verwenden 1column, 2columns-right, 3columnsoder empty.

Marius
quelle
Gibt es eine Fehlerprotokollierung für diesen Marius? Wenn nicht, kann ich ein Problem auf Git eröffnen.
LM_Fielding
Ich habe keine Ahnung.
Marius