SOAPv2 WS-I দিয়ে কেন অনেকগুলি বৈশিষ্ট্যের একটি আপডেট হয় না?


18

আমি এসওএপিভি 2 এবং ডাব্লুএস-আই দিয়ে ম্যাজেন্টো সিই 1.7.0.2 ব্যবহার করছি। আমি catalogProductUpdate-Modod দিয়ে পণ্য আপডেট করার চেষ্টা করছি ।

নীচের কোড উদাহরণের বিবরণটি আপডেট হয়ে যায়, তবে প্রস্তুতকারক-গুণাবলী (= নির্বাচন করুন) তা করে না। ফলাফল catalogProductUpdateহয় bool(true)

আমি কিছু চেষ্টা করেছি (খুব ভাল না, তবে আমি মরিয়া ;-)) বিভিন্নতা যেমন:

  1. মান নির্ধারণের জন্য পূর্ণসংখ্য মান 777 $manufacturer->valueনির্ধারণ করুন
  2. অতিরিক্ত_ট্রিবিউটস ক্ষেত্রের মধ্যে / ছাড়াই পণ্য আইডি সেট করে (তবে আমি নিশ্চিত যে এটি অতিরিক্ত_ট্রিবিউটের মধ্যে সেট করা দরকার)
  3. $manufacturer->valueমান 777 এর পরিবর্তে প্রস্তুতকারকের নাম সেট করুন

কোড:

$newProductData = new stdClass();
$additionalAttrs = array();

$manufacturer = new stdClass();
$manufacturer->key = "manufacturer";
$manufacturer->value = "777";
$additionalAttrs['single_data'][] = $manufacturer;

$newProductData->description = "Description Test1";
$newProductData->additional_attributes = $additionalAttrs;

$result = $client->catalogProductUpdate((object)array('sessionId' => $sessionId,
        'productId' => "2110000010058 ",
        'productData' => (object)$newProductData,
        NULL,
        'sku'
    ));

সম্পাদনা:

  • আমি এটি ডাব্লুএস-আই ছাড়াই এসওএপিভি 2 দিয়ে পরীক্ষা করেছি - ভাল কাজ করে।
  • আমি একই সেটিংস (ড্রপডাউন, স্কোপ, ...) দিয়ে টেস্টিংয়ের জন্য আরও একটি বৈশিষ্ট্য তৈরি করেছি যা এসওএপিভি 2 ডাব্লুএস-আই দিয়ে আপডেট হয় না তবে এসওএপিভি 2 দিয়ে থাকে। সুতরাং এই নতুন নির্মিত বৈশিষ্ট্যগুলি নির্মাতা-গুণ হিসাবে আচরণ করে।
  • অতিরিক্ত_ট্রিবিউটের মধ্যে একটি পাঠ্য-ক্ষেত্রের মান সেট করার চেষ্টা করা কার্যকর হয় না।

এ সম্পর্কে কোন ধারণা, লিঙ্ক, পরামর্শ?

লিংক: http://www.magentocommerce.com/api/soap/catolog/catologProduct/catalog_product.update.html

উত্তর:


14

আমি অবশেষে সমস্যার কারণ এবং সমাধানটি খুঁজে পেয়েছি:

সমস্যা: ডাব্লুএস -1 সহ এসওএপিভি 2 এতে single_dataএবং multi_dataবৈশিষ্ট্যগুলি ব্যবহার করে না । সুতরাং চেক /app/code/core/Mage/Catalog/Model/Product/Api/V2.phpইন _prepareDataForSaveব্যর্থ। পদ্ধতিটি _prepareDataForSaveযাচাই করে single_dataএবং multi_dataযা উভয়ই এসওএপি-কলের অংশ নয়, ডাব্লুএস-আই সহ এসওএপিভি 2-এর জন্য ডাব্লুএসডিএল অনুসারে।

এসওএপিভি 2 (ডাব্লুএসডিএল) - ক্যাটালগের উত্পাদন ক্রিয়েট এন্টিটি:

<element name="additional_attributes" type="typens:catalogProductAdditionalAttributesEntity" minOccurs="0"/>

ডাব্লুএস-আই (ডাব্লুএসডিএল) এর সাথে এসওএপিভি 2 - ক্যাটালগের পণ্য ক্রিয়েট ইন্টিটি:

<xsd:element name="additional_attributes" type="typens:associativeArray" minOccurs="0">
</xsd:element>

এসোসিয়েটিভআরারি হ'ল টাইপ এসোসিয়েটিভ এন্টিটি যার মধ্যে কী / মান যুক্ত রয়েছে। এসওএপিভি 2 সহ ডাব্লুএস-আই-তে, catalogProductAdditionalAttributesEntityব্যবহৃত হয় (যার মধ্যে একক_ডেটা এবং / অথবা মাল্টি_ডাটা মান রয়েছে যা আবার কী / মান জোড়া যুক্ত করে)।

এটি ডাব্লুএসডিএলের SOAPv2 WS-I অংশ যা অতিরিক্ত_বর্ধনের বিন্যাসটি বর্ণনা করে:

<xsd:complexType name="associativeEntity">
   <xsd:sequence>
      <xsd:element name="key" type="xsd:string"/>
      <xsd:element name="value" type="xsd:string"/>
   </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="associativeArray">
   <xsd:sequence>
      <xsd:element minOccurs="0" maxOccurs="unbounded" name="complexObjectArray" type="typens:associativeEntity"/>
   </xsd:sequence>
</xsd:complexType>

অতিরিক্ত_ট্রিবিউটের /app/code/core/Mage/Catalog/Model/Product/Api/V2.phpজন্য চেকটি জরিমানাযুক্ত, তবে একক_ডাটা বা মাল্টি_ডাতার চেকটি সর্বদা মিথ্যা বলে প্রত্যাবর্তন করে।

সমাধান:

আমি অন্য সাবান সমস্যা পাওয়া যায় এখানে যেখানে গত উত্তর আমার সমস্যার সমাধান ছিল: /programming//a/9502311/865443 )। সুতরাং আমি এই ব্লকটি আমার কোডটিতে রেখেছি _prepareDataForSaveযাতে অতিরিক্ত_ট্রিবিউট মানগুলি সেট করার সমস্যার সমাধান হয়েছে:

if (gettype($productData->additional_attributes) == 'array') {
            foreach ($productData->additional_attributes as $k => $v) {
                    $_attrCode = $k;
                    $productData->$_attrCode = $v;
            }
  }

আমি আশা করি এটি একই সমস্যার মুখোমুখি অন্য কাউকে সহায়তা করে। আমি এসওএপিভি 2 এবং এসওএপিভি 2 ডাব্লুএস-আই এবং / অথবা এই সমস্যার সমাধান করে এমন অন্যান্য উপায়ের মধ্যে এই ডিফারেনসিডের ব্যাখ্যাটিরও প্রশংসা করব।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.