سؤال

لقد صادفت مجموعة التعليمات البرمجية هذه في ملحق يتكرر عبر المنتجات الفرعية ويحاول إرجاع الكمية الحالية للمخزون واسم المنتجات الفرعية:

<?php foreach ($this->getChildProducts() as $childProduct) : ?>
        <?php $childProductStockQty = $this-> getProductStockQty($childProduct);?>
        <?php if ($childProductStockQty > 0) : ?>
            <tr>
                <td><?php echo $childProduct->getName() ?></td>
                <td class="a-center"><?php echo $childProductStockQty ?></td>
            </tr>
        <?php endif ?>
    <?php endforeach ?>

في CE 1.9.0.1 لقد نجح هذا الأمر بشكل مثالي، حيث تم إرجاع أسماء المنتجات وكميات المخزون كما هو متوقع.في CE 1.9.1, ، فسوف يُرجع كميات المخزون الصحيحة، لكن الاسم يُرجع قيمة فارغة.

سؤالي ليس "ما الخطأ في هذا الامتداد؟"، لقد أرسلت سؤالاً إلى المطور أيضًا.أتساءل عما إذا كان أي منكم على علم إذا كانت هناك تغييرات في CE 1.9.1 في كيفية استرداد اسم منتج فرعي.

قراءة الكود أسفل Mage/CatalogInventory/Block/Stockqty جحر الأرانب لم يسلط أي ضوء يمكنني اكتشافه

نقدر جميع النصائح.

هل كانت مفيدة؟

المحلول

من المثير للاهتمام أن هذا الاسم يعود خاليًا.البحث عن الكود الذي ينتهي به الأمر getUsedProducts أنه ينبغي Retrieve array of "subproducts" وإرجاع مجموعة من المنتجات.

لا توجد تغييرات يمكنني رؤيتها عند مقارنة الريبو المحلي من 1.9.0.1 إلى 1.9.1، لذا فهو لغز طفيف.والأغرب من ذلك أنه يتم إرجاعك إلى المخزون ولكن الاسم فارغ..يجب أن يكون كلاهما موجودًا في النموذج حيث أنهما حقلان مطلوبان.ربما تقوم الوحدة بإجراء بعض التعديلات الإضافية على المجموعة التي تؤثر على السلوك الأساسي.

ولكن للإجابة على السؤال.لا أستطيع رؤية أي شيء قد تغير بين هذين الإصدارين.

نصائح أخرى

أنا حل هذا مع هذا الخط

<?php $childProduct = Mage::getModel('catalog/product')->load($childProduct->getId()); ?>

لذلك حصلت على جميع معلومات منتج الطفل، والآن يحصل getName على ما نتوقعه.

آمل أن يساعد هذا!ليست أفضل طريقة، ولكنها تعمل.

أولاً، هل لديك كائنات منتج صالحة في الحلقة؟أي.يكون $childProduct->getId() إعادة ضبط معرف أو null؟إذا كان الأمر كذلك، فقد حدث خطأ ما عند الترقية.يرجى ملاحظة ذلك $this->getProductStockQty() و $childProduct->getName() نكون لا نفس الطريقة.لذا، ليس من الضروري أن يعملوا معًا أو يفشلوا معًا.

ثانيا، سوف تحتاج إلى فحص الكتلة المعنية getChildProducts() طريقة.ومن هناك، يمكنك تتبع كيفية تجميع المجموعة معًا.قد يكون السبب في ذلك هو أن المجموعة (لأي سبب كان بعد الترقية) لا تتضمن ملف name المجال فيها addAttributeToFilter() منقي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى magento.stackexchange
scroll top