我正在實現一個使用SOAP的Magento客戶端,並且我正在對Magento進行一些更改以提高應用程序的整體性能。爲此,我試圖減少對Magento服務的呼叫數量。Magento - 添加參數到soap方法
例如,我想爲購物車創建新報價並通過一次調用爲其設置客戶。要做到這一點,我已經改變了app\code\core\Mage\Checkout\etc\wsdl.xml
:
<message name="shoppingCartCreateRequest">
<part name="sessionId" type="xsd:string"/>
<part name="storeId" type="xsd:string"/>
<part name="customer" type="typens:shoppingCartCustomerEntity"/> <!--added this line -->
</message>
和文件/optiMage/app/code/core/Mage/Checkout/Model/Cart/Api.php
中,我已經改變了方法來創建這樣:
public function create($store = null, $customer = null)
{
$storeId = $this->_getStoreId($store);
try {
/*@var $quote Mage_Sales_Model_Quote*/
$quote = Mage::getModel('sales/quote');
$quote->setStoreId($storeId)
->setIsActive(false)
->setIsMultiShipping(false)
->save();
} catch (Mage_Core_Exception $e) {
$this->_fault('create_quote_fault', $e->getMessage());
}
$quoteId = (int) $quote->getId();
try{
$service = new Mage_Checkout_Model_Cart_Customer_Api_V2();
$res = $service->set($quoteId, $customer);
} catch (Mage_Core_Exception $e) {
$this->_fault('customer_not_set', $e->getMessage());
}
return $quoteId;
}
這個問題似乎是參數我添加($ customer)無法以某種方式訪問。當我嘗試轉儲它時,服務器停止運行,並不會向我的應用程序返回任何內容。
你能幫助我嗎?如果不夠清楚,請告訴我。謝謝!
PS:$ quoteId仍在生成。當我嘗試與新變量進行交互時出現問題。
============ ============編輯 我發現這個問題:我的客戶端應用程序將派遣一個不同類型的對象,這就是爲什麼Magento無法施放我的參數。現在它工作了!
不管怎樣,謝謝:)
我同意,我可以通過客戶ID,而不是一個整體的對象,但「shoppingCartCustomerSetRequest」確實收到一個對象(而不是ID)。我也會定製客戶模式,我不認爲只需添加每一個字段就可以解決問題。 – MatheusJardimB
解決。 +1爲你的努力:D – MatheusJardimB