Magento Özel Modül ile yardımcı olur.

4 Cevap php

Magento alışveriş sepeti PHP Zend Framework üzerine inşa edilmiştir. Bu benim Zend çerçevesi ile ele ettik ve ben şu zorluk yaşıyorum ilk kez ...

Ben ürünleri satın her kullanıcıların resim yüklemek sağlayacak özel bir modül oluşturma.

Bir kullanıcı kendi sepetine ürün eklemek için çalıştığında ben Addaction () yöntemi aşırı olabilir. Ben de kullanıcıya formu sunar ve dosya (lar) kabul eden bir özel bir modül oluşturabilirsiniz. Ancak benim yüklenmiş yöntemin içine benim modülü çalıştırmak için kodu eklemek için nasıl emin değilim:

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

Ben zorluklar şeyler yapmanın Zend MVC yol benim bilgi eksikliği geliyor sanıyorum. Ben yukarıdan aşağıya bütün Magento dokümantasyon / wiki / forum konuları inceledim.

4 Cevap

Ben bu çalışma almak için idare ettik düşünüyorum ben yeni bir cevap taşımak düşündüm.

İşte ne yaptım

Aşağıdaki dosyaları oluşturulur;

app / kod / local / Firma / SpecialCheckout / kontrolörleri / Checkout / CartController.php

app / kod / local / Firma / SpecialCheckout / etc / config.xml

app / etc / modules / Company_SpecialCheckout.xml

Eğer vardı aynısıdır ilk denetleyici;

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

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

Sonra konfigürasyon

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

ve sonra nihayet app / etc / modules config dosyası modülü aldı emin olmak için.

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

Eğer / çıkış / sepeti gittiğinizde o zaman 'test' görmelisiniz. Bu buldum ayrıntıları dayanmaktadır here.

Eğer Magento admin devre dışı yapılandırma dosyalarının cacheingini olduğundan emin olun.

Ben Magento üretim deneyimi yok ayarlıyoruz itiraf etmeliyim, ama onların kod çevresinde alay biraz zaman geçirdim.

Blok yapısı XML tanımlanmış ve böylece aslında sepetine Kontrol genişletmek gerek olmayabilir.

Düzen XML dosyaları app / tasarım / frontend / default / default / düzeni de (varsayılan yükleme) bulunabilir. Burada size ödeme sayfası için blok yapısını kurar checkout.xml bulacaksınız.

Bu sıkışmış olanlar için i denetleyicileri aşırı olmadan bu sorunu çözmek için basit yolu yazdı. Benim varyant onepage ödeme dayalı take a look in magento wiki

Bu benim için bir kabus beeing oldu, benim blogda bir Öğretici oluşturuldu:

CONTROLLER / OVERRIDE / Frontend [...] #^/customer/account/# /mycustomer/account/ [...]

Bu göz atın! How to magento declare and override controllers