ZF2 - get war nicht in der Lage zu Holen, oder erstellen Sie eine Instanz für getAlbumTable

Benutzte ich die getAlbumTable im Titel, da das problem, das ich bin vor ist, basierend auf der Zend-Album Tutorial, könnte leichter sein, für andere mit einem ähnlichen problem zu finden. Alles was ich getan habe, ist umbenennen Album "Champrallies".

Mein Fehler:

Zend\Mvc\Controller\PluginManager::get was unable to fetch or create an instance for getChampralliesTable

Was ich versuche zu tun, ist eine Funktion ausführen, die von einem zweiten Modell, das ich erstellt habe. Ich kann die Ausführung von der "original" - Modell kein problem AlbumTable oder in meinem Fall ChampionshipTable. Ich versuche, Daten aus einer zweiten Tabelle, aber innerhalb des gleichen Moduls. Die zweite Tabelle heißt "champ_rallies" und die Modell-Dateien Champrallies.php und ChampralliesTable.php.

Ändern dieses Teil in meinem controller

'champRallies' => $this->getChampralliesTable()->fetchAll(),

zu

'champRallies' => $this->getChampionshipTable()->fetchAll(),

bedeutet die Fehlermeldung verschwindet. Also mein Erster Gedanke ist, dass es etwas falsch mit namespaces, oder module.php. (Verzeihen Sie mir, ich bin Recht neu auf alle diese)

Module.php

<?php
namespace Championship;

use Championship\Model\Championship;
use Championship\Model\ChampionshipTable;
use Championship\Model\Champrallies;
use Championship\Model\ChampralliesTable;
use Zend\Db\ResultSet\ResultSet;
use Zend\Db\TableGateway\TableGateway;

class Module
{
    public function getAutoloaderConfig()
    {
        return array(
            'Zend\Loader\ClassMapAutoloader' => array(
                __DIR__ . '/autoload_classmap.php',
            ),
            'Zend\Loader\StandardAutoloader' => array(
                'namespaces' => array(
                    __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
                ),
            ),
        );
    }

    public function getConfig()
    {
        return include __DIR__ . '/config/module.config.php';
    }

    //Add this method:
    public function getServiceConfig()
    {
        return array(
            'factories' => array(
                'Championship\Model\ChampionshipTable' =>  function($sm) {
                    $tableGateway = $sm->get('ChampionshipTableGateway');
                    $table = new ChampionshipTable($tableGateway);
                    return $table;
                },
                'ChampionshipTableGateway' => function ($sm) {
                    $dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
                    $resultSetPrototype = new ResultSet();
                    $resultSetPrototype->setArrayObjectPrototype(new Championship());
                    return new TableGateway('championships', $dbAdapter, null, $resultSetPrototype);
                },
                'Championship\Model\ChampralliesTable' =>  function($sm) {
                    $tableGateway = $sm->get('ChampralliesTableGateway');
                    $table = new ChampralliesTable($tableGateway);
                    return $table;
                },
                'ChampralliesTableGateway' => function ($sm) {
                    $dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
                    $resultSetPrototype = new ResultSet();
                    $resultSetPrototype->setArrayObjectPrototype(new Champrallies());
                    return new TableGateway('champ_rallies', $dbAdapter, null, $resultSetPrototype);
                },
            ),
        );
    }
}

Mein zweiter Gedanke ist, dass vielleicht bin ich nicht deklarieren, die einen Namensraum, oder etwas ähnliches.

ChampralliesTable.php

<?php

namespace Championship\Model;

use Zend\Db\TableGateway\TableGateway;

class ChampralliesTable

Champrallies.php

<?php

namespace Championship\Model;

class Champrallies

Ich fürchte, ich bin etwas Blick Ausfall, aber ich habe nicht gefunden eine ähnliche Beiträge, die über google oder hier, jede Hilfe ist willkommen!

edit: ich hatte vergessen hinzuzufügen getChampralliesTable Funktion der Steuerung selbst,

public function getChampralliesTable()
{
This is Line 50 -> if (!$this->champralliesTable) {
        $sm = $this->getServiceLocator();
        $this->champralliesTable = $sm->get('Championship\Model\ChampralliesTable');
    }
    return $this->champralliesTable;
}

Aber jetzt bin ich bekommen,

Notice: Undefined property: Championship\Controller\ChampionshipController::$champralliesTable in /usr/home/phil/git/rallystats/module/Championship/src/Championship/Controller/ChampionshipController.php on line 50
Fügen Sie einfach die Eigenschaft auf Ihrem controller: protected $champralliesTable

InformationsquelleAutor Jack | 2013-08-15

Schreibe einen Kommentar