【问题标题】:how to inject a module within another module by zend framework 2?如何通过 zend 框架 2 在另一个模块中注入一个模块?
【发布时间】:2014-05-21 20:39:39
【问题描述】:

我试图了解如何通过 zf2 创建两个简单的独立模块,其中模块 A 的一些信息/功能由模块 B 调用。

例如:

模块 A 处理网站的页面 模块 B 处理站点上可用的语言

模块 A 连接到数据表,其中字段为:[id, title, content, language_id] 模块 B 连接到数据表,其中字段为:[id, language]

模块 A [language_id] 不是强制性的。

模块 A 需要从模块 B 中获取语言列表。 模块 B 没有任何其他模块依赖

我想在不引发异常的情况下禁用模块 B。 我想启用模块 B 并在模块 A 表单中查看语言选择器。

这可能吗?谢谢

【问题讨论】:

  • 如果模块 B 处理语言,如果您禁用模块 B,您希望看到什么而不是表单中的语言选择器?
  • 嗨,蒂姆,这很简单。该功能将不再可用,模块 A 中的语言信息将不再可见。我想禁用该功能
  • @Marius.C 你能给我看个样本吗?我想添加模块 B 而不更改模块 A 中的任何内容。模块 A 拦截模块 B 的存在并激活新功能。实现起来是不是太复杂了?

标签: php design-patterns module zend-framework2


【解决方案1】:

config/module.config.php 的 Module_B 中添加一个配置变量

"my_module" => array("have_lang_module" => true)

然后在 module_A 中您可以检查:

$config = $this->getServiceLocator()->get('Config'); if (isset($config['my_module']['have_lang_module'])) {...}

我不是专家,但我不明白为什么这不起作用。基本上是配置文件 已加载并合并,并可用于所有模块。

【讨论】:

  • 嗨,Marius,这样您就必须更改代码。我想要实现的是由其他模块在一个模块中自动“注入功能”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多