Zendframework 2 view Problem

Tobi1993

Grünschnabel
Hey Leute,
also ich kenne mich soweit schon ganz gut aus in PHP Programmierung und versuche nun mein Wissen in PHP mit Frameworks zu erweitern. Leider kämpfe ich momentan mit einem ganz schön nervigen Problem rum, welches ich leider nicht gelöst bekomme.... Naja vielleicht bin ich ja nur blind, aber in Sachen Framework bin ich absoluter Neuling und bräuchte einmal eure Hilfe.

Ich hab mir die Umgebung von Zend mit dem Skelton App geholt und die Skelton Test Anwendung gelöscht. Danach hab ich versucht ein vereinfachtes Beispiel von dem Tutorial, welches von der Offizielen Seite ist, zu Programmieren.
Jedoch schmeißt Zend immer einen Fehler, dass das Template nicht geladen werden kann.

Code:
Fatal error: Uncaught exception 'Zend\View\Exception\RuntimeException' with message 'Zend\View\Renderer\PhpRenderer::render: Unable to render template "error"; resolver could not resolve to a file' in /var/www/zend/vendor/zendframework/zendframework/library/Zend/View/Renderer/PhpRenderer.php on line 499
( ! ) Zend\View\Exception\RuntimeException: Zend\View\Renderer\PhpRenderer::render: Unable to render template "error"; resolver could not resolve to a file in /var/www/zend/vendor/zendframework/zendframework/library/Zend/View/Renderer/PhpRenderer.php on line 499

Hier der Verzeichnisbaum für das Modul Album:
Code:
--Album
---Module.php
---config
----module.config.php
---src
----Controller
-----AlbumController.php
---view
----album
-----album
------index.phtml

Die Module.php enthält folgenden Code:
PHP:
<?php
namespace Album;
class Module
{
    public function getAutoloaderConfig()
    {
        return array(
            'Zend\Loader\StandardAutoloader' => array(
                'namespaces' => array(
                    __NAMESPACE__ => __DIR__ .'/src/' . __NAMESPACE__
                )
            )
        );
    }
    public function getConfig()
    {
        return include __DIR__ . '/config/module.config.php';
    }
}

Die module.config.php diesen:
PHP:
<?php

return array(
    'controllers' => array(
        'invokables' => array(
            'Album\Controller\Album' => 'Album\Controller\AlbumController'
        )
    ),
    
    'router' => array(
        'route' => array(
            'album' => array(
                'type' => 'segment',
                'options' => array(
                    'route' => '/album/[/][:action][/:id]',
                    'constraints' => array(
                        'action' => '[a-zA-Z][a-zA-z0-9_-]*',
                        'id' => '[0-9]+'
                    )
                )
            )
        )
    ),
    
    'view_manager' => array(
        'template_path_stack' => array(
            'album' => __DIR__ . '/../view',
        )
    )
);
und der AlbumController diesen:
PHP:
<?php

namespace Album\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;

class AlbumController extends AbstractActionController
{
    public function indexAction() {
        return new ViewModel(array('bla' => 'Hello World!'));
    }
}

und in der index.phtml wird einfach nur die Variable bla mit echo $this->bla aufgerufen....


Ich hoffe ihr findet meinen Fehler, weil ich bin hier echt am verzweifeln und kurz davor alles mit Zend in die Ecke zu werfen.
mfg
Tobias
 
Die Exception sagt es eigentlich, was das Problem ist: Die View für error fehlt. Lege unterhalb von Album\view\album den Ordner "error" an. Dann erstelle in diesem Ordner die Datei error.phtml zunächst einmal als leer. Wiederhole den Test.

Die error/error.phtml soll für Fehleranzeigen verwendet werden. Dort kannst du bspw. den Stack-Trace des Fehlers anzeigen lassen. Z.b. mit diesem Template:

PHP:
<?php if ('production' !== $this->env): ?>
<div id="error">
    <p>
        <ul class="errorList">
            <li>
                <h3><?php echo $this->message ?></h3> 
            </li>
            <li>
                <h4>Exception information:</h4>
                <p><?php echo $this->exception->getMessage() ?></p>
            </li>
            <li>
                <h4>Stack trace:</h4>
                <p><?php echo $this->exception->getTraceAsString() ?></p>
            </li>
            <li>
                <h4>Request Parameters:</h4>
                <p><?php var_dump($this->request->getParams()) ?></p>
            </li>
        </ul>
    </p>
</div>
<?php endif ?>

Wie hast du das Projekt erzeugt? Auf https://github.com/zendframework/ZendSkeletonApplication gibt es eine Skelett-Applikation mit allen notwendigen Resourcen.
 
Hey , danke für deine Antwort.
Leider hat es nichts gebracht die error.phtml anzulegen in dem Verzeichnis.

Das Projekt hab ich erzeugt mit der IDE NetBeans. In dieser hab ich die Skelett-Applikation mit dem Composer eingetragen und erstellen dann ganz einfach ein Projekt. Diese läuft auch ohne Probleme. Danach hab ich einfach das Modul Application gelöscht und habe es aus der application.config.php ausgetragen.

Ich wollte halt für lernzwecke ein Modul vom Grund auf schreiben, leider will das alles nicht so einfach. Hier hab ich mal den zend Ordner auf Dropbox gespeichert, wenn du mal Zeit haben solltest und drüber gucken möchtest https://dl.dropboxusercontent.com/u/62366189/zend.tar.gz
 
Zurück