Domanda

Con una versione stabile di Zend Framework 2 all'orizzonte, abbiamo lentamente implementato alcuni componenti ZF2, cambiando convventioni, implementazione degli spazi dei nomi, ecc. Sarebbe bello avere tutti i nostri controller namespaati prima della mossa, solo perSemplicemente le cose, ma non ho trovato un buon modo per realizzare quell'obiettivo.

Qualcuno ha suggerimenti su Controller Namespacing in ZF1?Non mi dispiace modificare i file della libreria ZF1 a questo punto.

namespace Product;

use Zend_Controller_Action as AbstractActionController;

class IndexController extends AbstractActionController
{}
.

È stato utile?

Soluzione

ha impiegato un po ', ma ho trovato che questo può essere fatto con un dispatcher personalizzato:

<?php

namespace Webjawns\Controller\Dispatcher;

use Zend_Controller_Dispatcher_Standard as Dispatcher;

class Standard extends Dispatcher
{
    /**
     * Format action class name
     *
     * @param string $moduleName Name of the current module
     * @param string $className Name of the action class
     * @return string Formatted class name
     */
    public function formatClassName($moduleName, $className)
    {
        return $this->formatModuleName($moduleName) . '\Controller\\' . $className;
    }

    /**
     * Convert a class name to a filename
     *
     * @param string $class
     * @return string
     */
    public function classToFilename($class)
    {
        return str_replace('\\', DIRECTORY_SEPARATOR, $class) . '.php';
    }
}
.

Allora da qualche parte nel punto di ingresso dell'applicazione:

Zend_Controller_Front::getInstance()->setDispatcher(
    new \Webjawns\Controller\Dispatcher\Standard());
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top