Pergunta

O carrinho de compras Magento é construído sobre a estrutura Zend em PHP. Esta é a primeira vez que lidei com a estrutura do Zend e estou tendo a seguinte dificuldade ...

Estou criando um módulo personalizado que permitirá que os usuários enviem imagens sempre que comprarem produtos.

Eu posso sobrecarregar o método Addaction () sempre que um usuário tentar adicionar um produto ao carrinho. Também posso criar um módulo personalizado que apresenta o formulário para o usuário e aceita o (s) arquivo (s). No entanto, não tenho certeza de como inserir o código para executar meu módulo no meu método sobrecarregado:

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

Suspeito que minhas dificuldades vêm da minha falta de conhecimento da maneira Zend MVC de fazer as coisas. Estudei todos os threads Magento Documentation/Wikis/Fórum de cima para baixo.

Foi útil?

Solução

Ei, esta opção é dada na versão mais recente do Magento 1.3.1 para fazer upload do arquivo do Frontend, desfrute

Outras dicas

Pensei em mudar para uma nova resposta, pois acho que consegui fazer funcionar.

Aqui está o que eu fiz

criou os seguintes arquivos;

app/code/local/empresa/specialcheckout/controladores/checkout/cartcontroller.php

app/code/local/empresa/specialcheckout/etc/config.xml

app/etc/módulos/Company_SpecialCheckout.xml

Primeiro, o controlador, o que é exatamente como você tinha;

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

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

Então a configuração do módulo

<?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, finalmente, o arquivo de configuração no app/etc/módulos para garantir que o módulo seja retirado.

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

Então, quando você vai /checkout /carrinho, você deve ver 'teste'. Isso é baseado em detalhes que encontrei aqui.

Certifique -se de ter o cache de arquivos de configuração desativados no admin Magento.

Devo admitir que não tenho experiência de produção de Magento, mas passei algum tempo cutucando o código deles.

A estrutura do bloco é definida no XML e, portanto, você pode não precisar estender o controlador do carrinho.

Os arquivos XML de layout podem ser encontrados (em uma instalação padrão) no app/design/frontend/default/padrão/layout. Aqui, você encontrará checkout.xml, que configura a estrutura do bloco para a página de checkout.

Para aqueles que prenderam isso, escrevi a maneira mais simples de resolver esse problema sem sobrecarregar os controladores. Minha variante baseada no checkout do OnePage Dê uma olhada no Magento Wiki

Estava sendo um pesadelo para mim, criei um tutorial no meu blog:

Controlador/substituição/frontend [...] #^/cliente/conta/ #/mycustomer/conta/[...

Veja isso! Como Magento declarar e substituir controladores

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top