[英]Warning: include(xxxx): failed to open stream: No such file or directory
[英]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个错误:
您的助手类不能仅称为CommissionJunction
。 该名称必须包含从扩展名的名称空间开始的所有路径,就像Mage_Core_Helper_Data
一样。 而且,如果您的文件名为Data.php,则帮助程序类名称必须以Data结尾。 因此,其外观应类似于Namespace_Extension_Helper_Data 。
在config中,您声明应该通过很棒的字符串来引用您的助手,但是在模板中,您正在尝试通过字符串委托连接来获得助手。 因此,您应该在config.xml或模板中进行更改。
在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.