我想在Magentos产品/自定义选项区域中构建自定义输入字段。我开始写一个新的模块。 在“etc / modules”中,我创建了“Pi_Customize.xml”
<?xml version="1.0"?>
<config>
<modules>
<Pi_Customize>
<active>true</active>
<codePool>local</codePool>
</Pi_Customize>
</modules>
</config>
<?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:另一个?
答案 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>