마젠토 사용자 정의 모듈. 다른 모듈로 리디렉션하고 체크 아웃으로 돌아갑니다

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

문제

Magento 쇼핑 카트는 PHP의 Zend 프레임 워크를 기반으로합니다. Zend 프레임 워크를 처음으로 다루었 고 다음과 같은 어려움이 있습니다 ...

사용자가 제품을 구매할 때마다 이미지를 업로드 할 수있는 사용자 정의 모듈을 만들고 있습니다.

사용자가 카트에 제품을 추가하려고 할 때마다 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 문서/Wikis/Forum Thread를 위에서 아래로 연구했습니다.

도움이 되었습니까?

해결책

이 옵션은 최신 버전의 Magento 1.3.1로 제공되어 Frontend Favenue에서 파일을 업로드합니다.

다른 팁

나는 그것을 작동시킬 수 있다고 생각하면서 새로운 대답으로 옮길 것이라고 생각했다.

여기 내가 한 일이 있습니다

다음 파일을 만들었습니다.

앱/코드/로컬/회사/SpecialCheckout/Controllers/Checkout/Cartcontroller.php

앱/코드/로컬/회사/SpecialCheckout/etc/config.xml

앱/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>

그런 다음 마지막으로 모듈을 선택하여 앱/etc/모듈의 구성 파일을 사용합니다.

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

그런 다음 이동 /체크 아웃 /카트가 있으면 '테스트'가 표시됩니다. 이것은 내가 찾은 세부 사항을 기반으로합니다 여기.

Magento Admin에서 구성 파일의 캐시를 비활성화해야합니다.

나는 Magento의 생산 경험이 없다는 것을 선불로 인정해야하지만, 나는 그들의 코드를 찌르는 데 시간을 보냈습니다.

블록 구조는 XML로 정의되므로 실제로 카트 컨트롤러를 확장 할 필요가 없습니다.

레이아웃 XML 파일은 앱/디자인/Frontend/Default/Default/Layout에서 (기본 설치에서) 찾을 수 있습니다. 여기에서는 결제 페이지의 블록 구조를 설정하는 Checkout.xml을 찾을 수 있습니다.

이것에 붙어있는 사람들을 위해 나는 컨트롤러를 과부하시키지 않고이 문제를 해결하는 가장 간단한 방법을 썼습니다. onepage 체크 아웃에 기반한 내 변형 Magento Wiki를 살펴보십시오

그것은 나에게 악몽을 끼고 있었고, 나는 내 블로그에서 튜토리얼을 만들었습니다.

컨트롤러/재정의/프론트 엔드 [...] #^/고객/계정/ #/MyCustomer/Account/[...

이것 좀 봐! Magento가 컨트롤러를 선언하고 무시하는 방법

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top