Php Zend Framework:如何将默认布局脚本更改为layout.phtml以外的内容?
我想将我的默认布局文件命名为layout.phtml以外的名称,因为它并不真正描述它是什么类型的布局。我该怎么做?谢谢 从Bootstrap.php文件中,可以执行以下操作: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'); } 如果您想为
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);