Magento无效的块类型

时间:2014-01-12 16:52:44

标签: magento

我想在Magentos产品/自定义选项区域中构建自定义输入字段。我开始写一个新的模块。 在“etc / modules”中,我创建了“Pi_Customize.xml”

<?xml version="1.0"?>
<config>
    <modules>
        <Pi_Customize>
            <active>true</active>
            <codePool>local</codePool>
        </Pi_Customize>
    </modules>
</config>
在“app / code / local / etc”中我创建了“config.xml”

<?xml version="1.0"?>
<config>
    <modules>
        <Pi_Customize>
            <version>0.1</version>
        </Pi_Customize>
    </modules>
    <global>
        <catalog>
            <product>
                <options>
                    <custom>
                        <groups>
                            <custom translate="label" module="customize">
                                <label>Custom Stuff</label>
                                <render>customize/adminhtml_catalog_product_edit_tab_options_type_custom</render>
                                <types>
                                    <custom_type translate="label" module="customize">
                                        <label>Custom Text</label>
                                    </custom_type>
                                </types>
                            </custom>
                        </groups>
                    </custom>
                </options>
            </product>
        </catalog>
    </global>
</config> 

当我重新加载后端/产品/自定义选项时,我看到新添加的字段,但是我收到错误:

exception 'Mage_Core_Exception' with message 'Invalid block type: Mage_Customize_Block_Adminhtml_Catalog_Product_Edit_Tab_Options_Type_custom' in /home/michi/www/magento/app/Mage.php:595

我正在尝试大约4个小时,并且不能让它工作。为什么Magento试图加载“mage”而不是“pi / customize”。那么文件夹结构应该如何呢? 答:“Adminhtml / block / catalog .....”
B:“块/目录......”
C:另一个?

2 个答案:

答案 0 :(得分:2)

你的帖子缺乏一些背景,而且你不清楚你认为上面应该做什么,所以这很难完全解决你的问题。

也就是说,您的配置表明您要将以下块类用作渲染

<render>customize/adminhtml_catalog_product_edit_tab_options_type_custom</render>

这意味着Magento将尝试实例化customize/adminhtml_catalog_product_edit_tab_options_type_custom块类。库存Magento系统中没有customize块命名空间,您还没有通过配置添加一个。这意味着customize/adminhtml_catalog_product_edit_tab_options_type_custom对应于PHP类

Mage_Customize_Helper_Adminhtml_Catalog_Product_Edit_Tab_Options_Type_Custom

Magento中不存在此类,您会收到错误。

虽然您的错误也很奇怪。小写自定义(Options_Type_custom)看起来就像你在问题中没有提到的其他事情。

答案 1 :(得分:2)

感谢您的帮助,我更改了我的config.xml,如下所示:

<config>
    <modules>
        <Pi_Customize>
            <version>0.1</version>
        </Pi_Customize>
    </modules>
    <global>
        <blocks>
            <adminhtml>
                <rewrite>
                    <catalog_product_edit_tab_options_option>
                        Pi_Customize_Block_Adminhtml_Catalog_Product_Edit_Tab_Options_Option
                    </catalog_product_edit_tab_options_option>
                </rewrite>
            </adminhtml>
            <customize>
                <class>Pi_Customize_Block</class>
            </customize>
        </blocks>
        <catalog>
            <product>
                <options>
                    <custom>
                        <groups>
                            <customize translate="label" module="customize">
                                <label>Customized Input</label>
                                <render>customize/adminhtml_catalog_product_edit_tab_options_type_customized</render>
                                <types>
                                    <customize_type translate="label" module="customize">
                                        <label>custom</label>
                                    </customize_type>
                                    <!-- the second one
                                    <customizedue_type translate="label" module="customize">
                                        <label>due</label>
                                    </customizedue_type>
                                    -->
                                </types>
                            </customize>
                        </groups>
                    </custom>
                </options>
            </product>
        </catalog>
    </global>
</config>

现在我收到错误“无效的块类型:Pi_Customize_Block_Adminhtml_Catalog_Product_Edit_Tab_Options_Option”。但我的文件存储在:“app / code / local / Pi / Customize / Block / Adminhtml / Catalog / Product / Edit / Tab / Options / Option.php”。我不知道我做错了什么?

编辑: 我找到了错误,我输入了

<adminhtml>
    <rewrite>
        <class_to_override>
            my_class
        </class_to_override>
    </rewrite>
</adminhtml>

但必须是:

<adminhtml>
    <rewrite>
        <class_to_override>my_class</class_to_override>
    </rewrite>
</adminhtml>