【问题标题】:Understanding what is happening when Magento initialises a module了解 Magento 初始化模块时发生了什么
【发布时间】:2013-07-05 12:40:18
【问题描述】:

当我设置一个新模块时,我试图了解我的配置中发生了什么。要创建一个名为 Ts_Wo 的模块,我需要添加

app/code/etc/modules/Ts_Wo.xml

<config>
   <modules>
      <Ts_Wo>
        <active>true</active>
        <codePool>local</codePool>
      </Ts_Wo>
   </modules>
</config>

并且需要添加

app/code/local/Ts/Wo/etc/config.xml

<config>
<modules>
    <Ts_Wo>
        <version>0.1.0</version>
    </Ts_Wo>
</modules>
<frontend>
    <routers>
        <wo>
            <use>standard</use>
            <args>
                <module>Ts_Wo</module>
                <frontName>wo</frontName>
            </args>
        </wo>
    </routers>
</frontend>
</config>

从这里我去magento管理面板系统->配置->高级检查模块是否启用。

这一切都很好,直到我发现我创建了两个模块 Ts_Wo 和 Ts_Woo。显然,我纠正了错字(我在 config.xml 的模块节点中找到),我回到了一个模块

我的问题:

1- 我认为 Magento 需要这两个文件来创建模块?

2- 如果没有,我为什么要创建这两个文件?

2a- 如果确实如此,当我预计不会显示任何模块时,它是如何显示两个不同的模块的?

【问题讨论】:

    标签: magento


    【解决方案1】:
    1. Magento 中的“模块”是一个模糊的、定义不明确的概念。根据开发人员提供的内容,应用程序/代码将以不同的方式实现作为模块一部分的任何类和配置。例如,在 app/code/local/Ts/Wo/Model/Foo.php 创建一个类Ts_Wo_Model_Foo,然后通过new Ts_Wo_Model_Foo 在应用程序的某处实例化它。它是一个可以成为模块一部分的类,但模块本身并没有正确地存在于应用程序中。

    2. 应该有两个独立的配置XML文件,以便模块的声明XML(在app/etc/modules/,其中整体的一部分configuration DOM) 可用于控制模块的配置 XML (例如 app/code/local/Ts/Wo/etc/config.xml) 是否应该合并,以及以什么顺序 (基于&lt;depends&gt;)。将&lt;active&gt; 标志设置为false 将阻止模块配置被合并。

      2a。管理员中的显示(系统 > 配置 > 高级)是出了名的欺骗性。一、该组用于禁用模块输出。二、本组中列出的“模块”只是简单的从modules配置DOM xpath下的所有节点派生出来的,不多也不少。 即使是 &lt;active&gt; 标志设置为 false 的“模块”也会出现在此列表中。

    【讨论】:

    • @benmarks 只会增加模糊性,但我从未将 app/etc/modules 文件视为模块的 part。这些是更多的 Magento 配置文件,告诉它要加载哪个模块。
    • @AlanStorm - 这是思考它们的正确方式。不幸的是,它们可以(并且已经)用于破坏主模块配置。
    猜你喜欢
    • 2021-04-12
    • 2022-12-02
    • 1970-01-01
    • 2016-12-12
    • 1970-01-01
    • 1970-01-01
    • 2013-04-21
    • 2022-07-06
    • 2016-02-10
    相关资源
    最近更新 更多