Pregunta

El carrito de la compra de Magento está construido en Zend Framework en PHP. Esta es la primera vez que trato con el framework Zend y tengo la siguiente dificultad ...

Estoy creando un módulo personalizado que permitirá a los usuarios cargar imágenes cada vez que compren productos.

Puedo sobrecargar el método addAction () siempre que un usuario intente agregar un producto a su carrito. También puedo crear un módulo personalizado que presente el formulario al usuario y acepte el (los) archivo (s). Sin embargo, no estoy seguro de cómo insertar el código para ejecutar mi módulo en mi método sobrecargado:

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

Sospecho que mis dificultades provienen de mi falta de conocimiento de la forma de hacer las cosas de Zend MVC. He estudiado toda la documentación de Magento / wikis / forum hilos de arriba a abajo.

¿Fue útil?

Solución

Oye, esta opción se encuentra en la versión más reciente de magento 1.3.1 para cargar el archivo desde el frontend. disfrutar

Otros consejos

Pensé que me movería a una nueva respuesta porque creo que me las arreglé para que funcione.

Esto es lo que hice

creó los siguientes archivos;

app / code / local / Company / SpecialCheckout / controllers / Checkout / CartController.php

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

app / etc / modules / Company_SpecialCheckout.xml

Primero el controlador, que es exactamente como lo tenías;

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

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

Entonces la configuración del 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>

y, finalmente, el archivo de configuración en la aplicación / etc / modules para asegurarse de que el módulo esté seleccionado.

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

luego, cuando vaya / pago / carrito debería ver 'probar'. Esto se basa en los detalles que encontré aquí .

Asegúrese de tener la memoria caché de los archivos de configuración desactivada en el administrador de Magento.

Debo admitir por adelantado que no tengo experiencia en la producción de Magento, pero he pasado un tiempo buscando su código.

La estructura de bloques se define en XML, por lo que es posible que no necesite extender el controlador de carro.

Los archivos XML de diseño se pueden encontrar (en una instalación predeterminada) en app / design / frontend / default / default / layout. Aquí encontrará checkout.xml que configura la estructura de bloque para la página de pago.

Para aquellos que se atascaron en esto, escribí la forma más sencilla de resolver este problema sin sobrecargar los controladores. Mi variante basada en la comprobación de la página eche un vistazo en magento wiki

Fue una pesadilla para mí. Creé un tutorial en mi blog:

CONTROLADOR / OVERRIDE / Frontend [...]                                       # ^ / cliente / cuenta / #                 / mycustomer / account /                            [...]

¡Mira esto! Cómo magento declarar y anular los controladores

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top