Пользовательский модуль Magento.Перенаправление на другой модуль и возврат к оформлению заказа

StackOverflow https://stackoverflow.com/questions/252921

Вопрос

Корзина покупок Magento построена на платформе Zend Framework на PHP.Это первый раз, когда я имею дело с Zend framework, и у меня возникла следующая трудность...

Я создаю пользовательский модуль, который позволит пользователям загружать изображения всякий раз, когда они покупают товары.

Я могу перегружать метод addAction() всякий раз, когда пользователь пытается добавить товар в свою корзину.Я также могу создать пользовательский модуль, который представляет форму пользователю и принимает файл (ы).Однако я не уверен, как вставить код для запуска моего модуля в мой перегруженный метод:

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

Я подозреваю, что мои трудности проистекают из-за моего незнания способа работы с Zend MVC.Я изучил всю документацию Magento / вики / темы форума сверху донизу.

Это было полезно?

Решение

эй, эта опция включена в более новую версию magento 1.3.1 для загрузки файла из внешнего интерфейса наслаждаться

Другие советы

Я подумал, что перейду к новому ответу, поскольку, как мне кажется, мне удалось заставить его работать.

Вот что я сделал

создал следующие файлы;

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

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

app/etc/modules/Company_SpecialCheckout.xml

Сначала контроллер, который в точности такой, как у вас был;

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

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

Затем конфигурация модуля

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

и, наконец, файл конфигурации в app /etc /modules, чтобы убедиться, что модуль установлен.

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

затем, когда вы заходите / оформляете заказ / отправляете в корзину, вы должны увидеть "тест".Это основано на деталях, которые я нашел здесь.

Убедитесь, что у вас отключено кэширование конфигурационных файлов в Magento admin.

Я должен признать, что у меня нет опыта работы с Magento, но я потратил некоторое время на изучение их кода.

Структура блоков определена в XML, поэтому вам может не понадобиться расширять контроллер корзины.

XML-файлы макета можно найти (при установке по умолчанию) в app / design / frontend / default / default / layout. Здесь вы найдете checkout.xml, который устанавливает структуру блока для страницы оформления заказа.

Для тех, кто застрял на этом, я написал самый простой способ решить эту проблему без перегрузки контроллеров. Мой вариант, основанный на оформлении заказа на одну страницу, загляните в magento wiki

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top