रिवाइटर कंट्रोलर मैजेंटो


12

मुझे नियंत्रक से _initAction नामक कार्रवाई को अधिलेखित करने की आवश्यकता है:

/app/code/core/Mage/Adminhtml/controllers/Catalog/Product/AttributeController.php

मेरे अपने मॉड्यूल और कंट्रोलर में:

/app/code/local/Qbikz/ToolTip/controllers/Adminhtml/Catalog/Product/AttributeController.php

मैंने पहले से ही इसे हल करने के विभिन्न तरीकों की कोशिश की: पहली विधि जहां <from>और <to>मैंने विभिन्न संयोजनों की कोशिश की (404 पृष्ठ नहीं मिले)

 <rewrite>
     <qbikz_tooltip_adminhtml_catalog_product_attribute>
         <from><![CDATA[#^/adminpanel/catalog_product_attribute/edit/#]]></from>
         <to>/tooltip/adminhtml_catalog_product_attribute/init/</to>
     </qbikz_tooltip_adminhtml_catalog_product_attribute>
</rewrite>

+

 <frontend>
        <routers>
            <qbikz_tooltip>
                <use>admin</use>
                <args>
                    <module>Qbikz_ToolTip</module>
                    <frontName>catalog_product_attribute</frontName>
                </args>
            </qbikz_tooltip>
        </routers>
    </frontend>

दूसरी विधि (मेरे नियमों को अनदेखा करते हुए पृष्ठ):

<admin>
        <routers>
            <adminhtml>
                <args>
                    <modules>
                        <Qbikz before="Mage_Adminhtml_Catalog_Product">Qbikz_ToolTip_Adminhtml_Catalog_Product</Qbikz>
                    </modules>
                </args>
            </adminhtml>
        </routers>
    </admin>

अपने नियंत्रक में मैंने डाई ("ठीक") डाल दिया; लेकिन यह दिखाई नहीं दे रहा है। शायद कोई मदद कर सकता है? धन्यवाद।


क्या आपको कैश साफ़ करना याद था? विशेष रूप से कॉन्फ़िगर कैश?
बेनुबर्ड

"रिवाइटर कंट्रोलर"? वह क्या है?
ब्यूटेल बटुकस

हाँ, मेरे कैश अगर बंद।
स्टॉपर

ओवरराइट करना ठीक है? मेरी अंग्रेजी के लिए खेद है =)
स्टॉपर

दोस्तों कृपया मेरे सूत्र का
अनूप चौधरी

जवाबों:


15

दूसरी विधि का उपयोग करें लेकिन थोड़ा संशोधित। आपका XML इस तरह दिखना चाहिए:

<admin>
    <routers>
        <adminhtml>
            <args>
                <modules>
                    <Qbikz_ToolTip before="Mage_Adminhtml">Qbikz_ToolTip_Adminhtml</Qbikz_ToolTip>
                </modules>
            </args>
        </adminhtml>
    </routers>
</admin>

अब Qbikz/ToolTip/controllers/Adminhtml/Catalog/Product/AttributeController.phpइस सामग्री के साथ फाइल बनाएं :

<?php 
require_once 'Mage/Adminhtml/controllers/Catalog/Product/AttributeController.php';
class Qbikz_ToolTip_Adminhtml_Catalog_Product_AttributeController extends Mage_Adminhtml_Catalog_Product_AttributeController {
   protected function _initAction(){
       //your magic here
   }
}

@Marius क्या फ़ाइल, आपके रास्ते या आवश्यकता के लिए बेहतर है (Mage :: getModuleDir ('नियंत्रकों', 'Mage_Adminhtml'))। DS.'Catalog'.DS.'Product'DS.'AttributeController.php '); इसके अलावा मैं जानना चाहता हूं कि क्या हम ब्लॉक और कंट्रोलर को एक ही मॉड्यूल में फिर से लिख सकते हैं या हमें ब्लॉक और कंट्रोलर लिखने के लिए अलग-अलग मॉड्यूल लिखने होंगे।
अदनान

दोनों तरीकों का एक ही परिणाम है। लेकिन अगर आप 100% राजनीतिक रूप से सही होना चाहते हैं तो आपके द्वारा बताई गई विधि का उपयोग करें। इसके अलावा, आप ब्लॉक और नियंत्रकों को फिर से लिखने के लिए एक ही मॉड्यूल का उपयोग कर सकते हैं।
मारीस

Mage_Checkout :: CartController.php के indexAction () को ओवरराइड करने का प्रयास करते समय यह काम नहीं करता है।
मैक्स

1.9.4.2 में यह मेरे लिए एक त्रुटि फेंक रहा है। नियंत्रक एक 404 फेंकता है। शायद अब इसे करने का एक अलग तरीका है? यह मेरे साथ हो रहा है जब एक चेकआउट कंट्रोलर को ओवरराइड कर रहा है
gabtzi

0

मेरे onestepcheckout एक्सटेंशन, कॉन्फ़िगरेशन फ़ाइल में: ऐप / कोड / स्थानीय / गुरुमटे / Onestepcheckout / etc / config.xml

<frontend>
        <routers>
             <checkout>
                <args>
                    <modules>
                        <Gurutheme_Onestepcheckout before="Mage_Checkout">Gurutheme_Onestepcheckout</Gurutheme_Onestepcheckout>
                    </modules>
                </args>
            </checkout>
        </routers>
</frontend>

मैंने एक नियंत्रक जोड़ा

app/code/local/Gurutheme/Onestepcheckout/controllers/OnepageController.php

ओनपेज कोर कंट्रोलर को ओवरराइड करने के लिए

app/code/core/Mage/Checkout/controllers/OnepageController.php

यह उस ओवरराइडिंग कंट्रोलर का बेसिक सोर्स कोड है:

require_once("Mage/Checkout/controllers/OnepageController.php");

class Gurutheme_Onestepcheckout_OnepageController extends Mage_Checkout_OnepageController {

}

मुख्य बात यह है कि जब Magento के नियंत्रकों को फिर से लिखना है, तो हमें मूल एक को शामिल करना चाहिए और इससे विस्तार करना चाहिए, यह सभी मूल व्यवहार में मदद करता है इससे पहले कि सभी पूर्व-निर्मित सुविधाएँ काम करेंगी।


केवल तभी जब आप अपने ओवरराइड कार्यों में मूल वर्ग के अतिरिक्त (संरक्षित) तरीकों पर भरोसा करते हैं। आपके नियंत्रक में गायब सभी क्रियाओं को मूल नियंत्रक द्वारा नियंत्रित किया जाएगा। ध्यान दें कि आप तकनीकी रूप से नहीं है पुनर्लेखन नियंत्रक लेकिन जोड़ने के एक सामने नाम के लिए संचालकों की सूची में
फैबियन Schmengler

पूरी तरह से सहमत हैं, हम वास्तव में इसे फिर से रूट करते हैं, लेकिन किसी भी मौजूदा कोड को इनहेरिट करने के लिए मूल का विस्तार करना चाहिए
फान्वुगियाप

-1

मैंने एंटरप्राइज़ विशलिस्ट नियंत्रक को फिर से लिखा है।

मेरे में config.xml

<frontend>
    <routers>
        <wishlist>
            <args>
                <modules>
                    <namespace_modulename before="Enterprise_Wishlist">Namespace_Modulename</namespace_modulename>
                </modules>
                <module>Namespace_Modulename</module>
                <frontName>shoppinglist</frontName>
            </args>
        </wishlist>
    </routers>
</frontend>

और मेरे IndexControllerनीचे पंक्ति में जोड़ें:

require_once 'Enterprise/Wishlist/controllers/IndexController.php';

//before

class Namespace_Modulename_IndexController extends Enterprise_Wishlist_IndexController{}

आप इस तरह से सहायक को फिर से लिख सकते हैं: /magento//a/91474/33509

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.