Zend application.ini资源用于不同的模块

时间:2010-10-15 09:54:25

标签: zend-framework layout resources bootstrapping

我正在编写一个zend应用程序并尝试尽可能保持模块化功能。基本上我想将文件夹放入应用程序并具有即时功能。

Anywho;我正在尝试从每个模块创建侧边栏链接。我正在使用的方法是使用bootstrap:

这是我的bootstrap文件中的函数。我已将路线设置为另一个功能。

 public function _initNavigation()
 {
  $navigation = new Zend_Navigation();
  $navigation->addPages(
      array(
        array(
          'label' => 'Link Name',
          'route' => 'routeA',
          'class' => 'heading'
        ),
        array(
          'label' => 'Link Name',
          'route' => 'routeA',
          'params'=>array('param' => 'value'),
        ),
        array(
          'label' => 'Link Name',
          'params'=>array('param' => 'value'),
          'route' => 'routeA'
        )
      )
  );

  $this->bootstrap('layout'); //this line giving error :(
  $layout = $this->getResource('layout');
  $view = $layout->getView();
  $view->navigation($navigation);

我得到的错误是:

  

未找到资源匹配“布局”

经过一些敲击后我发现我必须将模块名称放在config / application.ini文件中的资源前面,例如:

moduleA.resources.layout.layoutPath = APPLICATION_PATH "/modules/moduleA/views/scripts"

现在问题是:如何使用单一资源获取布局资源?即,没有为我使用的每个新模块指定模块名称?

1 个答案:

答案 0 :(得分:2)

回复新帖子


经过大量的谷歌搜索(什么时候成为'搜索'的替代品?)我遇到了Leonard Dronkers' "Zend Framework Module Config The Easy Way"

基本上,将其添加到模块的引导程序文件

/**
 * Load config.ini file for this module.
 */
protected function _initModuleConfig()
{
    // load ini file
    $iniOptions = new Zend_Config_Ini(dirname(__FILE__) . '/configs/config.ini');

    // Set this bootstrap options
    $this->setOptions($iniOptions->toArray());
}

将config.ini文件放在模块的config文件夹中(例如/modules/news/config/config.ini),然后将模块特定设置放在那里。

就是这样。奇妙!