Frage

Ich bin mit dem Zend Framework für meine Website, und gerade einen speziellen Modul „api“ zu schaffen ... Nun, eine API.

Nun habe ich eine Menge von Controllern in meinem Modul und ich mag Verzeichnisse in diesem Controller Verzeichnis erstellen, um zu „ordentlich“ es. Meine neue Struktur etwas so sein würde:

 - controllers/
 - controllers/contents/[controllers]
 - controllers/users/[controllers]
 - controllers/misc/[controllers]

Allerdings finde ich mich völlig unfähig zu finden, welche Art von Urls und Umleitungen mit Zend_Controller_Router_Route mit diesen Controllern zuordnen konnte. Ist es möglich, dies irgendwie zu tun, oder sollte ich einfach auf die normale Struktur zurück gehen und alle meine Controller im selben Verzeichnis?


Ich habe versucht, die Separatoren mit _ wie smack0007 vorgeschlagen und wie es logisch schien gegeben, wie Zend Framework in der Regel auf Unterverzeichnisse bezieht, aber ich habe einen Fehler.


Edit: Entfernt der lange Fehlertext, da es nicht auf die Frage verwendet war, da es nur ein Problem war, weil ich nicht den propre Fall verwendet habe, zu glauben, ich hatte eine Groß mit dem ersten Buchstaben des Verzeichnisses zu setzen. Alle gut funktioniert jetzt.

War es hilfreich?

Lösung

Ich habe diese wieder in der Version 1.5 in Projekt getan, aber ich weiß nicht, ob es mehr funktioniert.

Sie haben Ihre Controller mit „{FOLDER} _“ voranstellen und dann den vollständigen Namen in der URL verwenden.

Also in Ihrem Fall würden Sie einen Controller mit dem Namen:

contents_FooController

und eine Route:

/contents_foo/index

Andere Tipps

Ich habe versucht, mehrere Ebene an der URL für eine alte Anwendung zu erreichen und die Vermeidung von vielen url roules zu verwenden. Also dachte ich über Controller in Unterverzeichnisse ist und eine URL roule für sie zu gruppieren.

Für eine Struktur

modules
 --test
   --controllers
     --sub
        -- OtherController.php
     --DefaultController.php

Im Bootstrap.php des Moduls I hinzugefügt:

public function __construct($application)
    {
        parent::__construct($application);
        $frontController = Zend_Controller_Front::getInstance();
        $frontController->addControllerDirectory(__DIR__ . '/controllers',
            'test');
        $frontController->addControllerDirectory(__DIR__ . '/controllers/sub',
            'test_sub');
    }

DefaultController.php ist

class Test_DefaultController extends Zend_Controller_Action {
     public function subAction()
    {
         $level1 = $this->getRequest()->getParam('level1');
         $level2 = $this->getRequest()->getParam('level2');
         return $this->_forward($level2, $level1, 'test_sub');
    }

So dies zu unserem Controller in dem Unterverzeichnis weiterleiten wird.

Schließlich hinzugefügt, um die Route:

new Zend_Controller_Router_Route_Regex('([a-z-]+)/([a-z-]+)/([a-z-]+)/([a-z-]+)/([a-z-]+)',
    array(),
    array(1 => 'module', 2 => 'controller', 3 => 'action', 4 => 'level1', 5 => 'level2'),
    '%s/%s/%s/%s/%s'
)

Jetzt mit einer Anfrage Test / default / sub / Sonstiges / Index, können Sie den index in OtherController.php rufen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top