마젠토 사용자 정의 모듈. 다른 모듈로 리디렉션하고 체크 아웃으로 돌아갑니다
-
05-07-2019 - |
문제
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가 컨트롤러를 선언하고 무시하는 방법