我想从 core/Mage/Adminhtml/controllers/Catalog/ProductController.php 重载 saveAction 方法,但它不起作用 - 我现在已经搜索并尝试了一整天:(
背景:我想在保存产品之前更改自定义属性的值。我发现 _initProductSave 设置了属性,我认为,在 init_ProductSave 之后更改它们将是一个好点(如果有人知道更好的地方,请告诉我)......
任何人都可以帮助我... :)
Magento 版本:社区版版本 1.7.0.1 没有扩展,没有安装主题,我只是安装了这个版本完全空白......
版本 1:通过复制到本地/法师文件夹覆盖控制器
首先,我尝试在正确的结构中将文件复制到 app/code/local 文件夹 - 但它不起作用(我已经使用 Varient.php 用于本地测试系统和 stores.php 用于更正价格错误-两者都有效...)
版本 2:使用扩展覆盖控制器
我的扩展看起来像这样:
文件结构:
code/local/MyOne/MyExtension/controllers/Catalog/ProductController.php
code/local/MyOne/MyExtension/etc/config.xml
etc/modules/MyOne_MyExtension.xml
文件如下所示:MyOne_MyExtension.xml:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<MyOne_MyExtension>
<active>true</active>
<codePool>local</codePool>
</MyOne_MyExtension>
</modules>
</config>
代码/本地/MyOne/MyExtension/etc/config.xml:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<MyOne_MyExtension>
<version>1.0.0</version>
</MyOne_MyExtension>
</modules>
<admin>
<routers>
<adminhtml>
<args>
<modules>
<MyOne_MyExtension before="Mage_Adminhtml">MyOne_MyExtension_Catalog_ProductController</MyOne_MyExtension>
</modules>
</args>
</adminhtml>
</routers>
</admin>
</config>
最后一个,code/local/MyOne/MyExtension/controllers/Catalog/ProductController.php:
<?php
require_once 'Mage/Adminhtml/controllers/Catalog/ProductController.php';
class MyOne_MyExtension_Catalog_ProductController extends Mage_Adminhtml_Catalog_ProductController
{
public function saveAction()
{
// do my stuff
die('reached method');
// after pressing on save, there should no be a white screen ...
}
}
?>
我已经用谷歌搜索并阅读了很多内容,我没有看到错误...
任何帮助真的很棒!
问候,马蒂亚斯