Domanda

Il carrello Magento è basato su Zend Framework in PHP. Questa è la prima volta che mi occupo del framework Zend e ho la seguente difficoltà ...

Sto creando un modulo personalizzato che consentirà agli utenti di caricare immagini ogni volta che acquistano prodotti.

Posso sovraccaricare il metodo addAction () ogni volta che un utente tenta di aggiungere un prodotto al proprio carrello. Posso anche creare un modulo personalizzato che presenta il modulo all'utente e accetta i file. Tuttavia non sono sicuro di come inserire il codice per eseguire il mio modulo nel mio metodo sovraccarico:

<?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();
    }
} 

Sospetto che le mie difficoltà derivino dalla mia scarsa conoscenza del modo di fare le cose di Zend MVC. Ho studiato tutta la documentazione di Magento / wiki / thread del forum dall'alto verso il basso.

È stato utile?

Soluzione

hey questa opzione è data nella versione più recente di magento 1.3.1 per caricare il file dal frontend godere

Altri suggerimenti

Ho pensato di passare a una nuova risposta poiché penso di essere riuscito a farlo funzionare.

Ecco cosa ho fatto

ha creato i seguenti file;

app / code / local / Azienda / SpecialCheckout / controller / Checkout / CartController.php

app / code / local / Azienda / SpecialCheckout / etc / config.xml

app / etc / modules / Company_SpecialCheckout.xml

Innanzitutto il controller, che è esattamente come avevi;

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

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

Quindi la configurazione del modulo

<?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>

e infine il file di configurazione in app / etc / modules per assicurarsi che il modulo sia prelevato.

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

quindi quando vai / checkout / carrello dovresti vedere 'test'. Questo si basa sui dettagli che ho trovato qui .

Assicurati di aver disabilitato la memorizzazione nella cache dei file di configurazione nell'amministratore Magento.

Devo ammettere in anticipo che non ho esperienza di produzione di Magento, ma ho passato un po 'di tempo a cercare il loro codice.

La struttura a blocchi è definita in XML, quindi potrebbe non essere necessario estendere effettivamente il controller del carrello.

I file XML layout sono disponibili (su un'installazione predefinita) in app / design / frontend / default / default / layout. Qui troverai checkout.xml che imposta la struttura a blocchi per la pagina di checkout.

Per coloro che si sono bloccati su questo ho scritto il modo più semplice per risolvere questo problema senza sovraccaricare i controller. La mia variante basata sul pagamento onepage dai un'occhiata a magento wiki

È stato un incubo per me, ho creato un Tutorial nel mio blog:

CONTROLLER / OVERRIDE / Frontend [...]                                       # ^ / Cliente / account / #                 / MyCustomer / account /                            [...]

Dai un'occhiata! Come magento dichiarare e sovrascrivere i controller

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top