Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Magento类方法重写不起作用_Php_Magento_Magento 1.7 - Fatal编程技术网

Php Magento类方法重写不起作用

Php Magento类方法重写不起作用,php,magento,magento-1.7,Php,Magento,Magento 1.7,我试图覆盖Magento的目录搜索功能,以便它使用“AND”而不是“OR”搜索搜索词 做到这一点的“正确”方法是创建我自己的模块,这就是更新证明。这就是我所做的。不幸的是,这不起作用。未调用更新的方法 以下是配置文件部分: <global> <models> <catalogsearch> <rewrite> <fulltext&g

我试图覆盖Magento的目录搜索功能,以便它使用“AND”而不是“OR”搜索搜索词

做到这一点的“正确”方法是创建我自己的模块,这就是更新证明。这就是我所做的。不幸的是,这不起作用。未调用更新的方法

以下是配置文件部分:

<global>
        <models>
            <catalogsearch>
                <rewrite>
                    <fulltext>MyNameSpace_MyModule_Model_CatalogSearch_Fulltext</fulltext>
                </rewrite>
            </catalogsearch>
        </models>
</global>
我曾在某个地方读到,如果您实际上试图覆盖的类从未使用特定的类“creator”方法调用过,那么进行这种“覆盖”是没有意义的?如果这是真的,这可以解释为什么我的新类方法从未被使用


那么在这种情况下,如何覆盖这个方法呢?我在这里做的对吗?

正如Ashley所指出的,您必须尊重您要覆盖的方法的声明。
像这样的东西有用:

class MyNameSpace_MyModule_Model_CatalogSearch_Fulltext extends Mage_CatalogSearch_Model_Fulltext
{

    public function prepareResult($query = null, $object = null, $queryText = null)
    {
        die('It works...');
    }
}

正如Ashley所指出的,您必须尊重您要重写的方法的声明。
像这样的东西有用:

class MyNameSpace_MyModule_Model_CatalogSearch_Fulltext extends Mage_CatalogSearch_Model_Fulltext
{

    public function prepareResult($query = null, $object = null, $queryText = null)
    {
        die('It works...');
    }
}

您的config.xml应该如下所示

<global>
        <models>
            <catalogsearch>
                <rewrite>
                    <catalogsearch_fulltext>MyNameSpace_MyModule_Model_CatalogSearch_Fulltext</catalogsearch_fulltext>
                </rewrite>
            </catalogsearch>
        </models>
</global>
  class MyNameSpace_MyModule_Model_CatalogSearch_Fulltext extends Mage_CatalogSearch_Model_Fulltext
    {
    // you should put default declaration of the function here.
// inside the function change the development as you want.
        public function prepareResult($query = null) 
        {
            die('It works...');
        }
    }

您的config.xml应该如下所示

<global>
        <models>
            <catalogsearch>
                <rewrite>
                    <catalogsearch_fulltext>MyNameSpace_MyModule_Model_CatalogSearch_Fulltext</catalogsearch_fulltext>
                </rewrite>
            </catalogsearch>
        </models>
</global>
  class MyNameSpace_MyModule_Model_CatalogSearch_Fulltext extends Mage_CatalogSearch_Model_Fulltext
    {
    // you should put default declaration of the function here.
// inside the function change the development as you want.
        public function prepareResult($query = null) 
        {
            die('It works...');
        }
    }

我成功地覆盖了相同的功能查看代码: etc->modules:LevoSoft_CatalogSearch.xml


真的
地方的

我成功地覆盖了相同的功能查看代码: etc->modules:LevoSoft_CatalogSearch.xml


真的
地方的

您的定义看起来不错。我注意到您在重写的函数中有更多的参数,所以您应该给出这些默认值(默认magento只有$query=null)。是否已清除缓存并检查模块是否显示在已启用的模块中。系统或异常日志中有错误吗?谢谢Ashley-好的,首先-函数声明只是一个剪切粘贴作业-不应该有任何其他参数?!另外-系统或异常日志中没有任何内容。抱歉-也已清除缓存,模块显示为Enabled。您的定义看起来很好。我注意到您在重写的函数中有更多的参数,所以您应该给出这些默认值(默认magento只有$query=null)。是否已清除缓存并检查模块是否显示在已启用的模块中。系统或异常日志中有错误吗?谢谢Ashley-好的,首先-函数声明只是一个剪切粘贴作业-不应该有任何其他参数?!另外-系统或异常日志中没有任何内容。抱歉-也已清除缓存,模块显示为enabledHi-谢谢。对不起,那没什么区别。还有其他想法吗?还有-你为什么要扩展Mage_CatalogSearch_Model_全文而不是Mage_CatalogSearch_Model_Resource_全文?还是没关系?还有-我没有遵循配置文件的逻辑?不应该是标签后面的标签,然后是标签后面的标签吗??在原始catalogsearch文件夹下没有名为catalogsearch的文件夹?@Mat:1。)首先,您应该清楚地标识要覆盖的类。2). 在my config.xml中,核心模型声明的config.xml中使用了节点。而
节点(就在
节点之后)应该在模型类的
模型
之后包含类名。3) . 如果你对你的代码非常确定,请确保缓存被禁用或刷新。谢谢你回复我Su1:1)好的,对类的混淆是我问题的一部分,但为了清楚起见-类是Mage\u CatalogSearch\u Model\u Resource\u Fulltext。2) 对不起,这还不清楚。请使用上面给出的类重新确认config.xml节点,好吗?3) 我已经做到了这一点没有改变嗨-谢谢。对不起,那没什么区别。还有其他想法吗?还有-你为什么要扩展Mage_CatalogSearch_Model_全文而不是Mage_CatalogSearch_Model_Resource_全文?还是没关系?还有-我没有遵循配置文件的逻辑?不应该是标签后面的标签,然后是标签后面的标签吗??在原始catalogsearch文件夹下没有名为catalogsearch的文件夹?@Mat:1。)首先,您应该清楚地标识要覆盖的类。2). 在my config.xml中,核心模型声明的config.xml中使用了节点。而
节点(就在
节点之后)应该在模型类的
模型
之后包含类名。3) . 如果你对你的代码非常确定,请确保缓存被禁用或刷新。谢谢你回复我Su1:1)好的,对类的混淆是我问题的一部分,但为了清楚起见-类是Mage\u CatalogSearch\u Model\u Resource\u Fulltext。2) 对不起,这还不清楚。请使用上面给出的类重新确认config.xml节点,好吗?3) 我这样做没有任何改变