Php Zend Framework:如何将默认布局脚本更改为layout.phtml以外的内容?

Php Zend Framework:如何将默认布局脚本更改为layout.phtml以外的内容?,php,zend-framework,Php,Zend Framework,我想将我的默认布局文件命名为layout.phtml以外的名称,因为它并不真正描述它是什么类型的布局。我该怎么做?谢谢 从Bootstrap.php文件中,可以执行以下操作: protected function _initLayoutName() { // use sitelayout.phtml as the main layout file Zend_Layout::getMvcInstance()->setLayout('sitelayout'); } 如果您想为

我想将我的默认布局文件命名为layout.phtml以外的名称,因为它并不真正描述它是什么类型的布局。我该怎么做?谢谢

从Bootstrap.php文件中,可以执行以下操作:

protected function _initLayoutName()
{
    // use sitelayout.phtml as the main layout file
    Zend_Layout::getMvcInstance()->setLayout('sitelayout');
}
如果您想为不同的模块使用不同的布局,则需要在引导中注册一个插件,并使该插件包含以下代码:

class Application_Plugin_LayoutSwitcher extends Zend_Controller_Plugin_Abstract
{
    public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request)
    {
        $module = $request->getModuleName(); // get the name of the current module

        if ('admin' == $module) {
            // set the layout to admin.phtml if we are in admin module
            Zend_Layout::getMvcInstance()->setLayout('admin');
        } else if ('somethingelse' == $module) {
            Zend_Layout::getMvcInstance()->setLayout('somethingelse');
        }
    }
}
在application.ini中,可以执行以下操作来设置布局脚本:

resources.layout.layout = "layoutname"

但是,这在每个布局的基础上都不起作用。如果您需要根据模块更改布局,则必须使用插件,但您可以使用application.ini中的设置来设置默认布局名称。

如果您希望根据模块设置特定布局 您可以创建插件并将其注册到boostrap中:

<?php

class Plugin_LayoutModule extends Zend_Controller_Plugin_Abstract 
{
        /**
         * preDispatch function.
         * 
         * Define layout path based on what module is being used.
         */
        public function preDispatch(Zend_Controller_Request_Abstract $request)
        {
                $module = strtolower($request->getModuleName());
                $layout = Zend_Layout::getMvcInstance();

                if ($layout->getMvcEnabled())
                {
                        $layout->setLayoutPath(APPLICATION_PATH . '/modules/' . $module . '/layouts/');
                        $layout->setLayout($module);
                }
        }
}

//Register it in your bootstrap.php     
    <?php
        defined('APPLICATION_PATH')
            or define('APPLICATION_PATH', dirname(__FILE__));
        ...

        Zend_Layout::startMvc();
        $frontController->registerPlugin(new Plugin_LayoutModule()); 
    ?>
在引导文件中:

$config = new Zend_Config_Ini('/path/to/layout.ini', 'layout');

$layout = Zend_Layout::startMvc($config);

谢谢!这是我一直在寻找的,但是有没有办法在ini配置文件中实现呢?谢谢!正如我之前问过drew010的,有没有办法通过ini配置文件设置默认布局名称?
$config = new Zend_Config_Ini('/path/to/layout.ini', 'layout');

$layout = Zend_Layout::startMvc($config);