Frage

Der Magento -Einkaufswagen basiert auf dem Zend -Framework in PHP. Dies ist das erste Mal, dass ich mich mit dem Zend -Framework befasst habe und ich habe die folgende Schwierigkeit ...

Ich erstelle ein benutzerdefiniertes Modul, mit dem Benutzer Bilder hochladen können, wenn sie Produkte kaufen.

Ich kann die AddAction () -Methode überlasten, wenn ein Benutzer versucht, ein Produkt in seinen Warenkorb hinzuzufügen. Ich kann auch ein benutzerdefiniertes Modul erstellen, das dem Benutzer das Formular vorstellt und die Datei (en) akzeptiert. Ich bin mir jedoch nicht sicher, wie ich den Code einfügt, um mein Modul in meine überlastete Methode auszuführen:

<?php
require_once 'Mage/Checkout/controllers/CartController.php';
class Company_SpecialCheckout_Checkout_CartController extends Mage_Checkout_CartController
{
    # Overloaded addAction
    public function addAction()
    {
        # when user tries to add to cart, request images from them
        # *********
        # *** what do i do in here to display a custom block ???? ###
        # *** and allow addAction to continue only if successfully validated form input ###
        # *********

        parent::addAction();
    }
} 

Ich vermute, meine Schwierigkeiten sind aus meinem Mangel an Wissen über die Zend -MVC -Art, Dinge zu tun. Ich habe alle Magento -Dokumentation/Wikis/Forum -Threads von oben nach unten untersucht.

War es hilfreich?

Lösung

Hey, diese Option wird in neuerer Version von Magento 1.3.1 angegeben, um die Datei von Frontend -Genießen hochzuladen

Andere Tipps

Ich dachte, ich würde zu einer neuen Antwort wechseln, da ich denke, dass ich es geschafft habe, es zum Laufen zu bringen.

Hier ist, was ich getan habe

die folgenden Dateien erstellt;

App/Code/Local/Company/SpecialCheckout/Controller/Checkout/cartcontroller.php

App/Code/Local/Company/SpecialCheckout/etc/config.xml

App/etc/modules/company_specialCheckout.xml

Zuerst der Controller, der genau so ist wie Sie;

    <?PHP
require_once 'Mage/Checkout/controllers/CartController.php';
class Company_SpecialCheckout_Checkout_CartController extends Mage_Checkout_CartController {

    public function indexAction()
    {
        die('test');
    }
}

Dann die Modulkonfiguration

<?xml version="1.0"?>
<config>
    <modules>
        <Company_SpecialCheckout>
            <version>0.1.0</version>
        </Company_SpecialCheckout>
    </modules>
    <global>
        <rewrite>
            <Company_SpecialCheckout_Checkout_Cart>
                <from><![CDATA[#^/checkout/cart#]]></from>
                <to>/SpecialCheckout/checkout_cart</to>
            </Company_SpecialCheckout_Checkout_Cart>
        </rewrite>
    </global>
    <frontend>
        <routers>
            <Company_SpecialCheckout>
                <use>standard</use>
                <args>
                    <module>Company_SpecialCheckout</module>
                    <frontName>SpecialCheckout</frontName>
                </args>
            </Company_SpecialCheckout>
        </routers>
    </frontend>
</config>

Und dann schließlich die Konfigurationsdatei in App/etc/modules, um sicherzustellen, dass das Modul abgeholt wird.

<?xml version="1.0"?>
<config>
     <modules>
        <Company_SpecialCheckout>
            <active>true</active>
            <codePool>local</codePool>
        </Company_SpecialCheckout>
     </modules>
</config>

Wenn Sie dann gehen, sollten Sie "Test" sehen. Dies basiert auf Details, die ich gefunden habe hier.

Stellen Sie sicher, dass Sie das Cacheeing von Konfigurationsdateien im Magento -Administrator deaktivieren lassen.

Ich muss im Voraus zugeben, dass ich keine Produktionserfahrung von Magento habe, aber ich habe einige Zeit damit verbracht, um ihren Code zu stöbern.

Die Blockstruktur ist in XML definiert, sodass Sie den Cart -Controller möglicherweise nicht tatsächlich erweitern müssen.

Die Layout -XML -Dateien finden Sie (bei einer Standardinstallation) unter App/Design/Frontend/Standard/Standard/Layout. Hier finden Sie checkout.xml, das die Blockstruktur für die Kasse -Seite festlegt.

Für diejenigen, die daran festgehalten wurden, schrieb ich den einfachsten Weg, um dieses Problem zu lösen, ohne Controller zu überladen. Meine Variante basiert auf Onepage -Kasse Schauen Sie sich Magento Wiki an

Es war ein Albtraum für mich, ich habe in meinem Blog ein Tutorial erstellt:

Controller/Override/Frontend [...] #^/Customer/Account/ #/MyCustomer/Konto/[...

Schau dir das an! Wie man Magento deklare und überschreibt Controller

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top