【问题标题】:How to get the returned values as stdClass object如何将返回值作为 stdClass 对象获取
【发布时间】:2013-11-12 06:01:00
【问题描述】:

我有以下代码来覆盖 V2.php

class Sigma_Sales_Model_Order_Api_V2 extends Mage_Sales_Model_Order_Api_V2
{
    public function info($orderIncrementId)
    {  
        $result = parent::info( $orderIncrementId ); 
        $order = Mage::getModel('sales/order')->loadByIncrementId($orderIncrementId);       
        $orderItems = $order->getItemsCollection();

        $skuQtyArray = array();
        foreach ($orderItems as $item)
        {
              $product_id = $item->product_id;
             $product_sku = $item->sku;
                 $item_id = $item->getItemId();     
            $tax_percent = $item->gettaxPercent();                      
            $product_qty = $item->getQtyOrdered();                      

            $product = Mage::getModel('catalog/product')->loadByAttribute('sku', $product_sku);              
            $productType=$product->getTypeID();
            if($productType=='simple')
            {                                           
                    $skuQtVal = $product_sku."=".$item_id;
                    $skuQtyArray[] = $skuQtVal;                                 
            }
        }

    $result['simple_product_skus'] = array_unique($skuQtyArray);         

    return $result; 
    }

}

现在我正在访问它

<?php
$client = new SoapClient('localhost/magento/index.php/api/v2_soap/index?wsdl=1');
$session = $client->login('testuser', 'testuser');

$result = $client ->salesOrderInfo($session, '100000026'); 
print_r($result);
?>

输出是这样的

 stdClass Object
 (
        ------
        ------
        ------

     [status_history] => Array
    (
        [0] => stdClass Object
            (
                [parent_id] => 72
                [created_at] => 2013-11-08 14:42:11
                [is_customer_notified] => 1
                [status] => pending
            )

    )

            [simple_product_skus] => Array
            (
                [0] => ASL-B346-67-64-98=155=166=1.0000=0.0000
                [1] => ASL-B346-67-64-98=156=116=1.0000=0.0000
            )

 )

我希望 simple_product_skus 作为 stdClass 对象,就像我正在获取 status_history 一样。

我怎样才能得到这个请帮忙。

【问题讨论】:

  • 你的意思是你想让 status_history 成为一个 stdClass 对象而不是一个数组?
  • @Michael J. Anderson 我希望 [simple_product_skus] 作为 stdClass 对象,就像我正在获取 status_history 一样。
  • @JosuaMarcelChrisano 我喜欢 (object)array_unique($skuQtyArray);按照答案中的建议并得到错误
  • 您是否尝试过仅调用一个项目并将其隔离(转换为数组并返回对象)$result->simple_product_skus 或 $result = (array)$result[simple_product_skus]?跨度>

标签: php magento soap


【解决方案1】:

我认为这会让你得到你想要的:

$result['simple_product_skus'] = (object)array_unique($skuQtyArray);

这是将数组类型转换为标准 php 对象。

【讨论】:

  • JAnderson 我收到致命错误:未捕获的 SoapFault 异常:[SOAP-ENV:Server] 调用未定义的函数对象()
  • 奇怪,这是一个 SOAP 异常。在代码中,您已经收到了来自您的请求的响应,对吗?你能发布更多细节吗?
  • 我在 array_unique($skuQtyArray) 中得到了正确的值。但是转换为对象是个问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-29
  • 1970-01-01
  • 2016-06-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多