Mô-đun tùy chỉnh Magento cho tiện ích bổ sung không hoạt động - Trình quan sát kích hoạt


7

Đã tạo mô-đun như Không có sản phẩm nào khác thêm vào giỏ hàng nếu sản phẩm bị hạn chế có sẵn trong giỏ hàng và ngược lại.

Mô-đun của tôi:

ứng dụng / etc / mô-đun / Brst_Test.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Brst_Test>
            <active>true</active>
            <codePool>community</codePool>
        </Brst_Test>
    </modules>
</config>

Đây là tập tin quan sát của tôi

ứng dụng / mã / cộng đồng / Brst / Test / Model / Observer.php

<?php
ini_set('display_errors', '1');

// Mage::log('fine dude', null, 'logfile.log');
class Brst_Test_Model_Observer
{
    //Put any event as per your requirement
    public function logCartAdd($observer) {
        // Mage::log('good dude', null, 'logfile.log');


        $product = Mage::getModel('catalog/product')
                        ->load(Mage::app()->getRequest()->getParam('product', 0));
        $cart_qty = (int) Mage::getModel('checkout/cart')->getQuote()->getItemsQty();

        if ($product->getId()==31588 && $cart_qty > 0) {
            Mage::throwException("You can not add This special Product, empty cart before add it");
        }
        $quote = Mage::getModel('checkout/cart')->getQuote();
        foreach ($quote->getAllItems() as $item) {
            $productId = $item->getProductId();
            if($productId==31588){
                Mage::throwException("Cart has Special Product you can not add another");
            }
        }
    }
}
?>

ứng dụng / mã / cộng đồng / Brst / Test / etc / config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Brst_Test>
            <version>1.0.0</version>
        </Brst_Test>
    </modules>
    <global>
        <models>
             <brst_test>
                <class>Brst_Test_Model</class>
             </brst_test>
        </models>
    </global>
    <frontend>
            <events>
                <checkout_cart_product_add_after>
                    <observers>
                        <Brst_Test_Model_Observer>
                            <type>singleton</type>
                            <class>Brst_Test_Model_Observer</class>
                            <method>logCartAdd</method>
                        </Brst_Test_Model_Observer>
                    </observers>
                </checkout_cart_product_add_after>
            </events>
    </frontend>
</config>

Không làm việc, làm thế nào để giải quyết lỗi?


bạn có nhận được gì trong tệp nhật ký không?
nishu

Không, không có bất kỳ lỗi trong tệp nhật ký?
zus

Câu trả lời:


3

Nó nên làm việc theo mã.

Hãy thử điều này nếu bạn không làm việc

  • Buồng trứng \app\code\core\Mage\Checkout\Model\Cart.phpđể

       \app\code\local\Mage\Checkout\Model\Cart.php
  • Tìm chức năng addProduct($productInfo, $requestInfo=null)trong tập tin ovveride của bạn, sản phẩm thêm logic được viết trong đó

  • thêm mã sau dòng `$ request = $ this -> _ get SẢNtRequest ($ requestInfo);

`

public function addProduct($productInfo, $requestInfo=null)
    {

        $product = $this->_getProduct($productInfo);
        $request = $this->_getProductRequest($requestInfo);

        /* ===========Restricted Product Coding Start==========        */
        $cart_qty = (int) Mage::getModel('checkout/cart')->getQuote()->getItemsQty();
        $restrictedIds = array(1,2,3); //add restricted product ids here
        if (in_array($product->getId(), $restrictedIds) && $cart_qty > 0) {
            Mage::getSingleton('core/session')->addError('You can not add This special Product, empty cart before add it');
           Mage::getModel('checkout/cart')->getQuote()->setHasError(true);
            return false;
        }

        $quote = Mage::getModel('checkout/cart')->getQuote();
        foreach ($quote->getAllItems() as $item) {
            $productId = $item->getProductId();
            if(in_array($productId, $restrictedIds)){
                Mage::getSingleton('core/session')->addError('Cart has Special Product you can not add another');
           Mage::getModel('checkout/cart')->getQuote()->setHasError(true);
                return false;
            }
        }

        /* ===========Restricted Product Coding End ==========        */

        /** @var Mage_Catalog_Helper_Product $helper */
        $helper  = Mage::helper('catalog/product');
       .
       .
       .
       .
       .
}

Lưu ý : Bạn có thể gọi người quan sát quá mức và đưa logic vào người quan sát của bạn nếu bạn không muốn mã hóa trong chức năng đó


Hoạt động tốt, nhưng thông báo lỗi không hiển thị, ví dụ: nếu tôi thử thêm sản phẩm bị hạn chế, hãy xem xét giỏ hàng đã có sản phẩm, nếu nhấp vào thông báo nút thêm vào sản phẩm bị hạn chế như sản phẩm được thêm vào giỏ hàng thành công. FYI -> sản phẩm không được thêm vào giỏ hàng, tôi đang tìm kiếm, thông báo lỗi duy nhất của tôi không được hiển thị đúng. @Ketan Borada
zus

tôi đã cập nhật câu trả lời của mình, thêm dòngMage::getModel('checkout/cart')->getQuote()->setHasError(true);
Ketan Borada

vẫn cùng một lỗi. Sản phẩm không thêm nhưng thông báo lỗi không hiển thị.
zus


làm việc tốt cho tôi cố gắng gỡ lỗi loom.com/share/d7501c1428a14e96ae887ff514db6a76
Ketan Borada

2

ứng dụng \ etc \ mô-đun \ Brst_Test.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <config>
        <modules>
            <Brst_Test>
                <active>true</active>
                <codePool>community</codePool>
            </Brst_Test>
        </modules>
    </config>

ứng dụng \ code \ cộng đồng \ Brst \ Test \ etc \ config.xml

        <?xml version="1.0"?>
        <config>
            <modules>
                <Brst_Test>
                    <version>1.0.0</version>
                </Brst_Test>
            </modules>
            <global>
                <models>
                     <brsttest>
                        <class>Brst_Test_Model</class>
                     </brsttest>
                </models>
            </global>
            <frontend>
                    <events>
                            <controller_action_predispatch_checkout_cart_add>
                                <observers>
                                    <brsttest>
                                        <type>singleton</type>
                                        <class>brsttest/observer</class>
                                        <method>logCartAdd</method>
                                    </brsttest>
                                </observers>
                            </controller_action_predispatch_checkout_cart_add>
                        </events>
            </frontend>
        </config>

ứng dụng \ code \ cộng đồng \ Brst \ Test \ Model \ Observer.php

    <?php
    class Brst_Test_Model_Observer extends Mage_Core_Model_Abstract
    {

        public function logCartAdd($observer){

            //I am change this
            $id = Mage::app()->getFrontController()->getRequest()->getParam('product');

            $product = Mage::getModel('catalog/product')->load($id);

            $cart_qty = (int) Mage::getModel('checkout/cart')->getQuote()->getItemsQty();

            // I am change this
            if ($product->getId() == '31588' && $cart_qty > 0) {
                Mage::getSingleton('core/session')->addError('You can not add This special Product, empty cart before add it');
                $url = Mage::getModel('core/url')->getUrl("checkout/cart");
                Mage::app()->getResponse()->setRedirect($url);
                Mage::app()->getResponse()->sendResponse();
                exit;
            }

           $quote = Mage::getModel('checkout/cart')->getQuote();

            foreach ($quote->getAllItems() as $item) {
                $productId = $item->getProductId();
                if($productId ==  '31588'){
                    Mage::getSingleton('core/session')->addError('Cart has Special Product you can not add another');
                    $url = Mage::getModel('core/url')->getUrl("checkout/cart");
                    Mage::app()->getResponse()->setRedirect($url);
                    Mage::app()->getResponse()->sendResponse();
                    exit;

                }
            }


        }
    }

Hãy thử mã này


Cảm ơn bạn đã trả lời, không hoạt động vẫn còn các sản phẩm khác được thêm vào giỏ hàng nếu các sản phẩm bị hạn chế có sẵn trong giỏ hàng. mã -> pastiebin.com/5d1597f887f17 @ Vijay-CyberLocker
zus

Trong mã của bạn cũng vậy, người quan sát đã kích hoạt, nhưng điều kiện không hoạt động @ Vijay-CyberLocker
zus

Ok anh cho tôi vài phút tôi sẽ cập nhật câu trả lời của tôi.
Vijay Khirade

tôi chỉ muốn biết liệu lớp của tôi có đúng trong lớp người quan sát hay không: <class> brst_test / observer </ class> trong config.xml
zus

Vẫn thêm các sản phẩm khác.
zus
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.