如何添加在配置文件中前端佈置一新,並保持一個管理部分請求被路由之前執行添加不同的佈局
回答
默認情況下,這是不可能的,因爲引導是(顯然) 。引導程序無法知道,如果前端或後端被調用。您可以創建一個FrontControlle -Plugin,它讀取(自定義)配置設置和路由請求,然後設置正確的佈局。
我有完全相同的問題,並通過繼承bootstrap來解決它。所以,我有三個引導文件
- 用戶空間的一個
- 聯繫一個
- 常見的一種
類似的東西在引導文件(它們都可以放置在默認Zend的位置)
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected function _initXXX() {
/* COMMON FOR ALL */
}
/* ... etc ... */
}
class BootstrapAdmin extends Bootstrap
{
protected function _initAdmin1() {
/* specific for admin */
}
/* ... etc ... */
}
class BootstrapUser extends Bootstrap
{
protected function _initUser1() {
/* specific for admin */
}
/* ... etc ... */
}
其中(1)和(2)擴展(3)。如果你願意,我重新創建代碼。
後,在index.php文件:
if ($adminMode) {
$application->setBootstrap(APPLICATION_PATH . '/Name_of_Bootstrap_file.php', 'BootstrapAdmin');
} else {
$application->setBootstrap(APPLICATION_PATH . '/Name_of_Bootstrap_file.php', 'BootstrapUser');
}
我第一次做到了,我放在同一個文件中的所有類Name_of_Bootstrap_file.php,以改變他們在一起,可能會採取不同的方式下次雖然...
希望我幫助。
請讓我知道結構 – aah 2010-11-23 13:52:23
佈局取決於哪些模塊被加載
在我CONFIGS /的application.ini
resources.layout.layout = "default"
resources.layout.pluginClass = "Core_Controller_Plugin_ModuleBasedLayout"
然後我的插件
<?php
class Core_Controller_Plugin_ModuleBasedLayout
extends Zend_Layout_Controller_Plugin_Layout
{
public function preDispatch(Zend_Controller_Request_Abstract $request)
{
$this->getLayout()->setLayoutPath(
Zend_Registry::get('config')->resources->frontController->moduleDirectory
. DIRECTORY_SEPARATOR . $request->getModuleName() . DIRECTORY_SEPARATOR . 'views' . DIRECTORY_SEPARATOR . 'layouts');
}
}
,並在我的bootstrap.php
protected function _initConfig() {
Zend_Registry::set ('config', new Zend_Config ($this->getOptions()));
}
我的佈局存儲在視圖/佈局/ default.php
想到我會用我的解決方案。這假定「管理員」部分是一個模塊。
我已經開發了一個動作助手比可以根據模塊的名稱和配置交換機佈局 - ModuleLayoutLoader
您可以從您的配置文件使用關聯ModuleLayout應用程序資源插件配置。例如
resources.moduleLayout.admin.layout = "admin"
resources.moduleLayout.anotherModule.layout = "foo"
您還可以設置layoutPath
屬性使用這樣的事情你的模塊的佈局,如果你想保持你的佈局腳本中分離
resources.moduleLayout.admin.layoutPath = APPLICATION_PATH "/path/to/admin/layout"
- 1. 在web請求之前執行函數
- 2. 骨幹 - 在子路由功能之前執行路由功能
- 3. 由Ajax「POST」請求渲染布局(Jade)
- 4. 當參數更改時,Ember.js路由不會執行新請求
- 5. MVC3 - 請求被路由到控制器之前是否有單個輸入點?
- 6. Angular 2組件在路由被解析之前被加載
- 7. 請求HTML部分和/全佈局相同的URL路徑
- 8. 請求頭不會被添加
- 9. 如何在UI路由器中添加後端管理佈局的路由
- 10. 路由請求掛
- 11. MVC3路由 - HREF已經被添加附加的路由
- 12. java.security.NoSuchAlgorithmException由Spring的RestTemplate執行請求時
- 13. 刷新之前和之後的不同佈局
- 14. Angularjs路由到不同的佈局頁面使用UI路由器
- 15. android-在加載主佈局之前加載進度條佈局
- 16. 在改變Backbone.js中的路由之前執行一個函數
- 17. 路由請求nginx的
- 18. Rails路由請求routes.rb動態路由
- 19. Spring - 在Web請求完成之前執行並且RequestMapping get被觸發
- 20. 如何在請求標題被加載到iframe之前設置請求標頭
- 21. 執行http請求時修改佈局元素
- 22. 兩個主要的路由器,網點用不同的佈局
- 23. ASP.NET webservices如何路由請求來執行WebMethods?
- 24. CakePHP的2.3.10非Ajax請求呈現AJAX佈局之前(之後)調用Ajax請求
- 25. 如何添加可滾動到由內佈局的佈局
- 26. 發送Ajax請求之前的事件(向請求添加一些數據)
- 27. 添加路由不失默認路由
- 28. 添加註釋路由的要求
- 29. 添加經由膨脹屬性相對佈局被忽略
- 30. 停止使用自定義路由的Ajax請求的佈局渲染
是管理部分的模塊? – piddl0r 2010-11-23 11:00:52