繁体   English   中英

警告:包括无法打开流:magento帮助器中没有此类文件或目录

[英]Warning: include failed to open stream: No such file or directory in magento helper

我创建了以下config.xml文件:

<config>
    <global>
        <helpers>
            <awesome>
                <class>CommissionJunction</class>
            </awesome>
        </helpers>
    </global>
</config>

我添加了以下php文件:作为Data.php

<?php
    class CommissionJunction extends Mage_Core_Helper_Data
    {

        /**
        * Get SKU, quantity, price and discount amount for each product in a given order
        * @param object $order
        * @return array
        */
        private function _getOrderProductsList($order)
        {
            $orderItems = $order->getAllItems();
            $purchasedSkus = array();
            $count_orderItems = count($orderItems);
            for($i = 0; $i < $count_orderItems; $i++) {
                $purchasedSkus[$i] = array(
                    'ITEM' => $orderItems[$i]['sku'],
                    'QTY' => number_format($orderItems[$i]['qty_ordered'],0), // no decimals
                    'AMT' => number_format($orderItems[$i]['price'],2), // 2 decimal places
                    'DCNT' => number_format(abs($orderItems[$i]['discount_amount']),2)
                 );
            }

            return $purchasedSkus;
        }

        /**
        * Get the Universal Data (JSON) Object for Commission Junction.
        * This object contains the order details passed on to Commission Junction for reporting purposes
        * on the Checkout Success / Order Confirmation page.
        * Notes:
        *  - CID, TYPE AND CURRENCY are hard coded
        * @param string $orderId
        * @return JSON object Universal Data Object for Commission Junction $json_masterTmsUdp
        */
        public function getCommissionJunctionUdo($orderId)
        {
            $order = Mage::getModel('sales/order')->loadByIncrementId($orderId);
            $udo = array();
            $udo['CID'] = 'XXXX';
            $udo['TYPE'] = 'XXXX';
            $udo['CURRENCY'] = 'USD';
            $udo['OID'] = $orderId;
            $udo['DISCOUNT'] = number_format(abs($order->discount_amount),2);

            $order_coupon_code = $order->coupon_code;
            if(!is_null($order_coupon_code) && !empty($order_coupon_code))
            {
                $udo['COUPON'] = $order_coupon_code;
            }

            $udo['PRODUCTLIST'] = self::_getOrderProductsList($order);

            if(Mage::getModel('core/cookie')->get('aff_commissionjunction') == 'cjafflx')
            {
                $udo['FIRECJ'] = "TRUE";
            }
            else
            {
                $udo['FIRECJ'] = "FALSE";
            }

            $masterTmsUdo['CJ'] = $udo;
            $json_masterTmsUdo = json_encode($masterTmsUdo);

            return $json_masterTmsUdo;

        }

    }

然后在succes.phtml中添加了以下内容:

<script>var MasterTmsUdo = <?php echo Mage::helper('commissionjunction')->getCommissionJunctionUdo($this->getOrderId()); ?></script>
<script>/*DO NOT ALTER *** tpd*/(function(e){var t="1340",n=document,r,i,s={http:"http://cdn.mplxtms.com/s/MasterTMS.min.js",https:"https://secure-cdn.mplxtms.com/s/MasterTMS.min.js"},o=s[/\w+/.exec(window.location.protocol)[0]];i=n.createElement("script"),i.type="text/javascript",i.async=!0,i.src=o+"#"+t,r=n.getElementsByTagName("script")[0],r.parentNode.insertBefore(i,r),i.readyState?i.onreadystatechange=function(){if(i.readyState==="loaded"||i.readyState==="complete")i.onreadystatechange=null}:i.onload=function(){try{e()}catch(t){}}})(function(){});</script>

错误:1.我的成功页面无法正确呈现,模板丢失了。 2.我在system.log中得到了以下内容

014-08-09T21:33:07+00:00 ERR (3): Warning: include(Mage/Commissionjunction/Helper/Data.php): failed to open stream: No such file or directory  in /home/theprint/public_html/preprod/lib/Varien/Autoload.php on line 93
2014-08-09T21:33:07+00:00 ERR (3): Warning: include(Mage/Commissionjunction/Helper/Data.php): failed to open stream: No such file or directory  in /home/theprint/public_html/preprod/lib/Varien/Autoload.php on line 93

我至少可以看到3个错误:

  1. 您的助手类不能仅称为CommissionJunction 该名称必须包含从扩展名的名称空间开始的所有路径,就像Mage_Core_Helper_Data一样。 而且,如果您的文件名为Data.php,则帮助程序类名称必须以Data结尾。 因此,其外观应类似于Namespace_Extension_Helper_Data

  2. 在config中,您声明应该通过很棒的字符串来引用您的助手,但是在模板中,您正在尝试通过字符串委托连接来获得助手。 因此,您应该在config.xml或模板中进行更改。

  3. 在config.xml类标记中,您必须将路径写入helper文件夹。 类似于Namespace_Extension_Helper

magento需要类名称,如Packagename_Modulename_Helper

config.xml中

<config>
    <global>
        <helpers>
            <CommissionJunction>
                <class>CompanyName_CommissionJunction_Helper</class>
            </CommissionJunction>
        </helpers>
   </global>
</config>

在班上

class CompanyName_CommissionJunction_Helper_Data extends Mage_Core_Helper_Abstract

然后您可以致电: Mage::helper('CommissionJunction');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM