2 Stimmen

Wie man die "Ansichten" von Zend_Layout verschiebt

Normalerweise würde sie sich in einer solchen Struktur befinden:

../application/modules/somemodule/views/scripts/index/index.phtml

Wie ich es anstelle:

../application/templates/somemodule/template1/views/......
../application/templates/somemodule/templateTWOOMG/.......

??

3voto

takeshin Punkte 46602

Sie müssen damit spielen: $viewRenderer::setViewBasePathSpec();

Zum Beispiel in frontController Plugin, (oder einfacher, aber nicht so flexibel, in Bootstrap.php ):

$templateName = 'myTemplate';

$bootstrap = $this->getBootstrap();

$bootstrap->bootstrap('layout');
if ($bootstrap->hasResource('layout')) {
    $layout = $bootstrap->getResource('layout');
    $layout->setLayoutPath($basePath . '/layouts/scripts/');
}

$bootstrap->bootstrap('view');
if ($bootstrap->hasResource('view')) {
    $view = $bootstrap->getResource('view');
} else {
    $view = new Zend_View;
}

$vr = Zend_Controller_Action_HelperBroker::getExistingHelper("viewRenderer");
$vr->setViewBasePathSpec($basePath."/modules/:module/$templateName/views/");

Werfen Sie einen Blick auf Getter und Setter in frontController , view , layout y viewRenderer Klassen. Es gibt eine Vielzahl von Methoden, die es erlauben, die Standardverzeichnisstruktur anzupassen.

0voto

clinton.paquin Punkte 31

Ich habe es mit einem Plugin gemacht und eine Variable in meiner Konfiguration gesetzt, um den Namen des Themes anzugeben.

class Application_Plugin_ThemeSetup extends Zend_Controller_Plugin_Abstract
{
    public function preDispatch(Zend_Controller_Request_Abstract $request)
    {
        // load up the config and the view object
        $objConfig = Zend_Registry::get('config');
        $objView   = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('view');

        // set path for views based on theme designation in config
        $theme = ! empty($objConfig->theme->name) ? $objConfig->theme->name : 'default';

        $Renderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
        $Renderer->setViewBasePathSpec(APPLICATION_PATH."/views/$theme");

        // add some variable to the view at high level
        $objView->themeName = $objConfig->theme->name;
        $objView->themeDescription = $objConfig->theme->description;
    }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X