我想將我的默認佈局文件命名爲layout.phtml以外的東西,因爲它沒有真正描述它是什麼類型的佈局。我怎樣才能做到這一點?謝謝!Zend Framework:如何將默認佈局腳本更改爲layout.phtml以外的內容?
4
A
回答
6
從你的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中的設置來設置默認佈局名稱。
3
如果你想利用基於您的模塊 您可以創建一個插件,在您的自舉註冊它有特定的佈局:
<?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());
?>
編輯:
設置佈局到另一個文件使用.ini文件:
創建layout.ini
文件,並把它:
[layout]
layout = "foo"
layoutPath = "/path/to/layouts"
contentKey = "CONTENT"
在引導文件:
$config = new Zend_Config_Ini('/path/to/layout.ini', 'layout');
$layout = Zend_Layout::startMvc($config);
+0
Thx求救!正如我前面問drew010,是否有任何方法通過ini配置文件設置默認佈局名稱? – blacktie24 2012-02-04 05:03:31
+0
使用layout.ini文件編輯我的答案 – 2012-02-04 05:55:13
相關問題
- 1. Zend Framework:如何附加默認佈局
- 2. 更改Zend Framework的默認模塊
- 3. 如何更改Android Studio默認佈局
- 4. 如何更改默認佈局目錄?
- 5. 更改contact_us默認佈局
- 6. 更改默認佈局
- 7. 如何將腳本轉換爲Zend Framework?
- 8. Zend Framework:佈局
- 9. 如何更改佈局的內容?
- 10. 如何更改佈局的內容?
- 11. 如何在Zend Framework中緩存佈局內容
- 12. 更改Zend Framework 2的默認模板解析器行爲
- 13. 默認情況下沒有佈局的Zend Framework 2動作
- 14. 將外部腳本與Zend Framework集成
- 15. 在Zend Framework中將默認的.phtml擴展名改爲.php?
- 16. 如何在Catalyst中全局更改默認內容類型?
- 17. 更改設計的默認佈局
- 18. Zend Framework的默認值表
- 19. Zend Framework的默認錯誤
- 20. 如何將以下查詢更改爲Zend Framework(1)查詢?
- 21. CakePHP 1.1.6如何將ajax佈局分解爲默認佈局
- 22. 如何將相對佈局設置爲默認佈局
- 23. Zend Framework:如何禁用默認路由?
- 24. 爲Zend Framework 2控制器設置默認佈局的理想位置?
- 25. Zend Framework:佈局中的Zend_Form
- 26. 帶佈局的Zend Framework Bootstrap?
- 27. Zend Framework - 具有不同內容的不同佈局
- 28. Play Framework:如何更改內存sa用戶的默認密碼?
- 29. 默認和移動佈局Zend框架
- 30. 默認字符串內容的更改
THX!這是我正在尋找,但有沒有辦法在ini配置文件中做到這一點? – blacktie24 2012-02-04 05:02:24
我剛剛用一個例子更新了答案。 – drew010 2012-02-04 05:22:47
gotcha,thx再次的詳細回覆! – blacktie24 2012-02-04 05:41:41