>我已经安装了一个模块扩展,它在管理员的第546行中抛出了一个致命错误"致命错误:在..../app/Mage.php中找不到类'Mage_Giftcards_Helper_Data'"。
我已经参考了这个链接 https://stackoverflow.com/a/9191286/2919940 这个链接,这个链接也 https://magento.stackexchange.com/a/7133/3693
但我有
<global>
<helpers>
<giftcards>
<class>Webtex_Giftcards_Helper</class>
</giftcards>
</helpers>
</global>
在我的配置中.xml我有这个类
class Webtex_Giftcards_Helper_Data extends Mage_Core_Helper_Data{
// my methods
}
声明在"/app/code/local/Webtex/Giftcards/Helper/Data.php"路径。
我已经禁用了编译器并通过创建空的"var/cache"目录来清除缓存。
我发现该配置.xml应该具有辅助类定义,而数据.php应该声明该辅助类。
但是我的情况中两者都有,这个错误的原因是什么?我也在我的新 magento 安装上测试了该模块,
Magento版本是1.7.0.2
请为此错误提供帮助??如果类名有冲突,我们如何调试?
更新:这是我的应用程序/etc/modules/Webtex_Giftcards.xml文件。
<?xml version="1.0"?>
<config>
<modules>
<Webtex_Giftcards>
<active>true</active>
<codePool>local</codePool>
<name>Webtex Gift Cards</name>
</Webtex_Giftcards>
</modules>
</config>
这是我的系统.xml文件
<?xml version="1.0"?>
<config>
<tabs>
<webtex translate="label" module="giftcards">
<label>WebTex</label>
<sort_order>300</sort_order>
</webtex>
</tabs>
<sections>
<giftcards module="giftcards">
<tab>webtex</tab>
<label>Gift Cards</label>
<frontend_type>text</frontend_type>
<sort_order>200</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<groups>
<default module="giftcards">
<label>Defaults</label>
<frontend_type>text</frontend_type>
<sort_order>10</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<fields>
<min_card_value>
<label>Min Gift Card Value</label>
<frontend_type>text</frontend_type>
<sort_order>20</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</min_card_value>
<max_card_value>
<label>Max Gift Card Value</label>
<frontend_type>text</frontend_type>
<sort_order>21</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</max_card_value>
<show_in_shopping_cart>
<label>Show In Shopping Cart Page</label>
<frontend_type>select</frontend_type>
<source_model>adminhtml/system_config_source_yesno</source_model>
<sort_order>22</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</show_in_shopping_cart>
<show_as_payment_method>
<label>Show As Payment Method</label>
<frontend_type>select</frontend_type>
<source_model>adminhtml/system_config_source_yesno</source_model>
<sort_order>22</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</show_as_payment_method>
<show_mail_delivery_date_field>
<label>Show email delivery date field</label>
<frontend_type>select</frontend_type>
<source_model>adminhtml/system_config_source_yesno</source_model>
<sort_order>23</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</show_mail_delivery_date_field>
</fields>
</default>
<email module="giftcards">
<label>Email Options</label>
<frontend_type>text</frontend_type>
<sort_order>50</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<fields>
<card_picture>
<label>Use default GiftCard picture for Email</label>
<frontend_type>select</frontend_type>
<source_model>adminhtml/system_config_source_yesno</source_model>
<sort_order>24</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<comment>Set "No" for use product picture</comment>
</card_picture>
<email_template>
<label>Template for e-mail</label>
<frontend_type>select</frontend_type>
<source_model>adminhtml/system_config_source_email_template</source_model>
<sort_order>30</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</email_template>
<print_template>
<label>Template for print</label>
<frontend_type>select</frontend_type>
<source_model>adminhtml/system_config_source_email_template</source_model>
<sort_order>30</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</print_template>
<offline_template>
<label>Template for offline</label>
<frontend_type>select</frontend_type>
<source_model>adminhtml/system_config_source_email_template</source_model>
<sort_order>30</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</offline_template>
<confirm_template>
<label>Template for confirmation</label>
<frontend_type>select</frontend_type>
<source_model>adminhtml/system_config_source_email_template</source_model>
<sort_order>30</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</confirm_template>
</fields>
</email>
</groups>
</giftcards>
</sections>
</config>
这是我的配置.xml文件。
<?xml version="1.0"?>
<config>
<modules>
<Webtex_Giftcards>
<version>3.3.1</version>
</Webtex_Giftcards>
</modules>
<admin>
<routers>
<giftcards>
<use>admin</use>
<args>
<module>Webtex_Giftcards</module>
<frontName>giftcards</frontName>
</args>
</giftcards>
<adminhtml>
<args>
<modules>
<Webtex_Giftcards before="Mage_Adminhtml">Webtex_Giftcards_Adminhtml</Webtex_Giftcards>
</modules>
</args>
</adminhtml>
</routers>
</admin>
<frontend>
<routers>
<checkout>
<args>
<modules>
<Webtex_Giftcards before="Mage_Checkout">Webtex_Giftcards</Webtex_Giftcards>
</modules>
</args>
</checkout>
</routers>
<layout>
<updates>
<giftcards>
<file>giftcards.xml</file>
</giftcards>
</updates>
</layout>
<translate>
<modules>
<Webtex_Giftcards>
<files>
<default>Webtex_Giftcards.csv</default>
</files>
</Webtex_Giftcards>
</modules>
</translate>
</frontend>
<global>
<rewrite>
<giftcards_giftcards_index>
<from><![CDATA[#^/customer/giftcards/#]]></from>
<to>/giftcards/giftcards/</to>
</giftcards_giftcards_index>
<giftcards_giftcards_balance>
<from><![CDATA[#^/customer/giftcards/balance/#]]></from>
<to>/giftcards/giftcards/balance/</to>
</giftcards_giftcards_balance>
<giftcards_giftcards_print>
<from><![CDATA[#^/customer/giftcards/print/#]]></from>
<to>/giftcards/giftcards/print/</to>
</giftcards_giftcards_print>
<giftcards_giftcards_apply>
<from><![CDATA[#^/customer/giftcards/apply/#]]></from>
<to>/giftcards/giftcards/apply/</to>
</giftcards_giftcards_apply>
</rewrite>
<models>
<giftcards>
<class>Webtex_Giftcards_Model</class>
<resourceModel>giftcards_mysql4</resourceModel>
</giftcards>
<giftcards_mysql4>
<class>Webtex_Giftcards_Model_Mysql4</class>
<entities>
<giftcards>
<table>giftcards_card</table>
</giftcards>
<cardslist>
<table>giftcards_cardlist</table>
</cardslist>
<order>
<table>giftcard_order</table>
</order>
</entities>
</giftcards_mysql4>
<sales>
<rewrite>
<order>Webtex_Giftcards_Model_Sales_Order</order>
</rewrite>
</sales>
</models>
<resources>
<giftcards_setup>
<setup>
<module>Webtex_Giftcards</module>
<class>Mage_Catalog_Model_Resource_Eav_Mysql4_Setup</class>
</setup>
<connection>
<use>core_setup</use>
</connection>
</giftcards_setup>
</resources>
<helpers>
<giftcards>
<class>Webtex_Giftcards_Helper</class>
</giftcards>
</helpers>
<blocks>
<giftcards>
<class>Webtex_Giftcards_Block</class>
</giftcards>
</blocks>
<events>
<catalog_product_save_before>
<observers>
<webtex_giftcards_observer_catalog_product_save_after>
<type>singleton</type>
<class>giftcards/observer</class>
<method>catalogProductSaveBefore</method>
</webtex_giftcards_observer_catalog_product_save_after>
</observers>
</catalog_product_save_before>
<order_cancel_after>
<observers>
<webtex_giftcards_observer_sales_order_cancel_after>
<type>singleton</type>
<class>giftcards/observer</class>
<method>salesOrderCancelAfter</method>
</webtex_giftcards_observer_sales_order_cancel_after>
</observers>
</order_cancel_after>
<sales_order_payment_refund>
<observers>
<webtex_giftcards_observer_sales_order_creditmemo_refund>
<type>singleton</type>
<class>giftcards/observer</class>
<method>saleOrderPaymentRefund</method>
</webtex_giftcards_observer_sales_order_creditmemo_refund>
</observers>
</sales_order_payment_refund>
<sales_order_save_after>
<observers>
<webtex_giftcards_observer_sales_order_save_after>
<type>singleton</type>
<class>giftcards/observer</class>
<method>salesOrderSaveAfter</method>
</webtex_giftcards_observer_sales_order_save_after>
</observers>
</sales_order_save_after>
<sales_model_service_quote_submit_after>
<observers>
<webtex_giftcards_observer_checkout_type_onepage_save_order_after>
<type>singleton</type>
<class>giftcards/observer</class>
<method>checkoutTypeOnepageSaveOrderAfter</method>
</webtex_giftcards_observer_checkout_type_onepage_save_order_after>
</observers>
</sales_model_service_quote_submit_after>
<core_block_abstract_to_html_after>
<observers>
<webtex_giftcards_observer_checkpriceiszero>
<type>singleton</type>
<class>giftcards/observer</class>
<method>checkpriceiszero</method>
</webtex_giftcards_observer_checkpriceiszero>
</observers>
</core_block_abstract_to_html_after>
<sales_quote_collect_totals_after>
<observers>
<webtex_giftcards_discount_observer_testdiscountquote>
<type>singleton</type>
<class>giftcards/discount_observer</class>
<method>testDiscountQuote</method>
</webtex_giftcards_discount_observer_testdiscountquote>
</observers>
</sales_quote_collect_totals_after>
</events>
<template>
<email>
<giftcards_email_email_template translate="label" module="giftcards">
<label>Gift Card E-mail</label>
<file>giftcard_email.html</file>
<type>html</type>
</giftcards_email_email_template>
<giftcards_email_print_template translate="label" module="giftcards">
<label>Gift Card Print</label>
<file>giftcard_print.html</file>
<type>html</type>
</giftcards_email_print_template>
<giftcards_email_offline_template translate="label" module="giftcards">
<label>Gift Card Offline</label>
<file>giftcard_offline.html</file>
<type>html</type>
</giftcards_email_offline_template>
<giftcards_email_confirm_template translate="label" module="giftcards">
<label>Gift Card Confirm</label>
<file>giftcard_confirm.html</file>
<type>html</type>
</giftcards_email_confirm_template>
</email>
</template>
<catalog>
<product>
<type>
<giftcards module="giftcards">
<label>Gift Card</label>
<model>giftcards/product_type_giftcards</model>
<price_model>giftcards/product_price</price_model>
<is_qty>1</is_qty>
<composite>0</composite>
</giftcards>
</type>
</product>
</catalog>
<sales>
<quote>
<totals>
<discount>
<class>giftcards/discount</class>
<after>subtotal,shipping</after>
<before>grand_total</before>
</discount>
</totals>
</quote>
</sales>
</global>
<adminhtml>
<sales>
<order>
<create>
<available_product_types>
<giftcards />
</available_product_types>
</create>
</order>
</sales>
</adminhtml>
<default>
<giftcards>
<email>
<email_template>giftcards_email_email_template</email_template>
<print_template>giftcards_email_print_template</print_template>
<offline_template>giftcards_email_offline_template</offline_template>
<confirm_template>giftcards_email_confirm_template</confirm_template>
</email>
</giftcards>
</default>
<adminhtml><layout><updates><blog><file>webtex/giftcards/giftcards.xml</file></blog></updates></layout></adminhtml>
<crontabs>
<jobs>
<schedule><cron_expr>0 1 * * *</cron_expr></schedule>
<run><model>giftcards/observer::sendEmailByDeliveryDate</model></run>
</jobs>
</crontabs>
</config>
谢谢
我的回答与 @Pedram Behroozi 的答案非常相似,如果不是因为评论的奇怪声誉限制,我可能会将其添加为评论。
当我遇到这个问题时,这是因为对adminhtml.xml中的"模块"属性感到困惑。
<config>
<menu>
<catalog>
<children>
<productfeed translate="title" module="productfeed">
<title>Product Data Feed</title>
<action>adminhtml/productfeed/</action>
<sort_order>90</sort_order>
</productfeed>
</children>
</catalog>
</menu>
</config>
当 Pedram 说模块名称必须小写并且没有命名空间时,他并不完全正确。当您提供"翻译"属性时,相应的"模块"属性会告诉Magento使用该翻译的助手。因此,重要的是它与 config.xml 中帮助程序节点内的节点名称完全匹配。我的错了,因为在那个节点中我包含了命名空间:
<config>
<global>
<helpers>
<etw_productfeed>
<class>Etw_Productfeed_Helper</class>
</etw_productfeed>
</helpers>
</global>
</config>
在 Alan Storm 的文章"Admin Hello World Revisited"中,您可以看到他在模块引用中使用了命名空间,并且仍然有效。所以无论哪种方式都可以,只要adminhtml中的内容.xml与config.xml中的内容相匹配。
我两次遇到此错误,两次情况下我的xml文件中都存在问题。
我的问题不是关闭标签(示例):
<frontend>
<routers>
<!-- ... -->
<routers>
并以错误的方式指定module
属性(etc/adminhtml.xml
):
<config>
<menu>
<report>
<children>
<foo_bar translate="title" module="bar"> <!-- module has to be lower case here and without the package name. Foo_Bar or Bar are wrong and cause the error. -->
<title>My own report</title>
<action>adminhtml/bar</action>
</foo_bar>
</children>
</report>
</menu>
</config>
请注意上面代码中的注释。
不幸的是,没有简单的方法来检查xml文件是否存在拼写错误和错误,但是一种方法是逐部分注释掉代码,然后查看错误是否消失。
希望对您有所帮助。
请检查是否从管理员>系统>工具>编译中启用了编译。如果您在未禁用编译的情况下添加了扩展,则可能会导致此问题。清除缓存并再次重新运行编译过程。希望这可以解决您的问题。
在模块配置.xml中,您必须定义帮助程序节点,否则它将始终查找Mage_...而不是本地或社区
<global>
<helpers>
<mymodulename><class>XXX_YYY_Helper</class>
</mymodulename>
</helpers>
</global>
你的助手类应该是这样的,
class Webtex_Giftcards_Helper_Data extends Mage_Core_Helper_Abstract{
// my methods
}
检查您的扩展类..您应该将类从
Mage_Core_Helper_Abstract
不是来自
Mage_Core_Helper_Data
你忘了在前端节点中添加frontName
<frontend>
<routers>
<giftcards>
<use>standard</use>
<args>
<module>Webtex_Giftcards</module>
<frontName>giftcards</frontName>
</args>
</giftcards>
<checkout>
<args>
<modules>
<Webtex_Giftcards before="Mage_Checkout">Webtex_Giftcards</Webtex_Giftcards>
</modules>
</args>
</checkout>
</routers>
<layout>
<updates>
<giftcards>
<file>giftcards.xml</file>
</giftcards>
</updates>
</layout>
</frontend>
希望这对你有帮助
是由自动加载器文件引起的。要解决这个问题,请不要在文件名中使用"_",特别是在配置中.xml因为它将被"/"替换并抛出此类错误。
前任:giftcard_confirm.html
使用:礼品卡确认.html
我有同样的问题。我已经检查了我的配置.xml并检查了我的布局 xml:
<layout> <updates> <module_name> <file>module_name.xml</file> </module_name> </updates> </layout>
I have done mistake in module_name.xml. I have remove that code which is not needed.