Frage

die Verzeichnisstruktur Ich versuche, dies zu erreichen sei:

application/default/views/layouts/layout.phtml
application/default/views/scripts/index/index.phtml
application/admin/views/layouts/layout.phtml
application/admin/views/scripts/index/index.phtml
library/Zend
config/config.ini
public/index.php (bootstrap)

, aber ich kann nicht herausfinden, wie lassen Zend meine layout.phtml in jedem meiner Module finden.

in meinem Bootstrap ich habe:

define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application/'));
define('APPLICATION_ENVIRONMENT', 'testing');

//setup path to our library files
set_include_path( APPLICATION_PATH . '/../library' . PATH_SEPARATOR .
                  get_include_path() );

//register the autoloader
require_once 'Zend/Loader.php';
Zend_Loader::registerAutoload(); 

//set config in the registry
$config = new Zend_Config_Ini( APPLICATION_PATH . '/../config/config.ini', APPLICATION_ENVIRONMENT ); 
Zend_Registry::set('config', $config);

//setup logging
$writer = new Zend_Log_Writer_Stream(APPLICATION_PATH . '/../log/debug.log');
$logger = new Zend_Log($writer);
Zend_Registry::set('logger', $logger);

//run!
$frontController = Zend_Controller_Front::getInstance();
$frontController->addModuleDirectory(APPLICATION_PATH);
//initialize Zend_Layout's MVC helpers
Zend_Layout::startMvc();

$frontController->throwExceptions(true);

try {

    Zend_Controller_Front::getInstance()->dispatch();

} catch (Exception $exception) {

    echo '<html><body><center>'  . 'An exception occured while dispatching the front controller.'; 
    if (defined('APPLICATION_ENVIRONMENT') && APPLICATION_ENVIRONMENT != 'production'  ) {
        echo '<br /><br />' . $exception->getMessage() . '<br />'  . '<div align="left">Stack Trace:' . '<pre>' . $exception->getTraceAsString() . '</pre></div>'; 
    }
    echo '</center></body></html>';
    exit(1);
}

Wo soll ich denn falsch?

Update:

Ich habe nicht auf diesem seit langer Zeit sieht, so die akzeptierte Lösung kann up-to-date nicht sein. Wenn jemand eine mehr up-to-date-Lösung auf diese Frage (das heißt ZF 1.8+) veröffentlichen möchten, tun Sie dies bitte! Es wäre hilfreich, um andere, die für eine Lösung dieses Problems suchen.

War es hilfreich?

Lösung

Sie sollten überprüfen, pro Modul Zend_Layout , in diesem Artikel, der Autor deckt genau das, was Sie sind zu erreichen versuchen. Seine Methodik ist ein Plugin für den Front-Controller zu schreiben, die das Layout Registrierung behandelt.

Andere Tipps

Mit Zend Framework 1.12 (Haben sie nicht auf frühere Versionen getestet): Werke aus der Box

Ich verwende application.ini in der Regel zu Setup Dinge so, in orther Layouts zu aktivieren:

resources.layout.layout = "layout"

... oder was auch immer die Standard-Layouts sollen aufgerufen werden. Als "layoutPath" nicht definiert wurde Zend_Layout wird sich in "Application / modules // views / scripts" für eine Datei mit dem Namen "layout.phtml"

Wenn Sie Zend_Tool verwenden es Layouts mit der folgenden Zeile beginnen:

resources.layout.layoutPath = APPLICATION_PATH "layouts/scripts"

Das ist auch in Ordnung, nur das Verzeichnis löschen oder vermeiden, dass die default „layout.phtml“ zu schaffen. Wenn das Standardlayout wird nicht in diesem Verzeichnis gefunden es in de Module wie zuvor für die „layout.phtml“ inside „Application / modules // views / scripts“ aussehen wird.

Wenn das Layout nicht innerhalb eines Moduls gefunden wird, wird es das Layout des Standardmoduls laden.

So einfach wie das!

Wenn Sie einige zusätzliche Arbeit mit der Vorlage benötigen, können Sie ein Plugin, um es beispielsweise hinzufügen:

resources.layout.pluginClass = "YourLibrary_Controller_Plugin_Layout"

und einige zusätzliche Sachen in seinem Inneren.

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