SUPEE पैच 8788 स्थापना के बाद व्यवस्थापक पैनल में समस्या


9

मेरे पास Magento CE 1.9.2.4 पैच (5377,1533,4788 आदि लगभग सभी पैच) के साथ स्थापित है

यह प्रश्न उन मुद्दों को भी प्रकट करता है जो किसी भी कस्टम मॉड्यूल में हो सकते हैं / निश्चित रूप से केवल कोर मैगेंटो मुद्दों के बजाय अपने कस्टम अनुभागों में छवि अपलोड शामिल हैं।

  1. अब मैंने कमांड-लाइन के माध्यम से नवीनतम पैच 8788 स्थापित करने के बाद, मैं अपने कस्टम मॉड्यूल के "एड / एडिट" पृष्ठ को खोलने में सक्षम नहीं हूं, जो 8788 स्थापना से पहले ठीक काम कर रहा था।

जब मैं अपने मॉड्यूल का "नया बैनर जोड़ें" पृष्ठ खोलने का प्रयास करता हूं तो मुझे नीचे त्रुटि हो रही है:

घातक त्रुटि: एक सदस्य फ़ंक्शन को कॉल करें () / गैर-ऑब्जेक्ट पर /home/site_user/public_html/app/code/community/My/Module/Block/Adminhtml/Bddner/Aab/Tab/Image.php में 57 नंबर पर कॉल करें।

अपराधी लाइन नीचे दी गई है:

$this->getUploader()->getConfig()->setUrl(Mage::getModel('adminhtml/url')->addSessionParam()->getUrl('*/*/image'))
  1. इसके अलावा, मैं पहले से ही अपलोड किए गए उत्पाद छवियों को व्यवस्थापक Catalog > Manage Products > Any product > Imagesअनुभाग में नहीं देख सकता ।

नीचे कोर Mage_Adminhtml_Block_Media_Uploaderक्लास कहा जा रहा है।

<?php
/**
 * Magento
 *
 * NOTICE OF LICENSE
 *
 * This source file is subject to the Open Software License (OSL 3.0)
 * that is bundled with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://opensource.org/licenses/osl-3.0.php
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@magento.com so we can send you a copy immediately.
 *
 * DISCLAIMER
 *
 * Do not edit or add to this file if you wish to upgrade Magento to newer
 * versions in the future. If you wish to customize Magento for your
 * needs please refer to http://www.magento.com for more information.
 *
 * @category    Mage
 * @package     Mage_Adminhtml
 * @copyright  Copyright (c) 2006-2016 X.commerce, Inc. and affiliates (http://www.magento.com)
 * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
 */

/**
 * Adminhtml media library uploader
 *
 * @category   Mage
 * @package    Mage_Adminhtml
 * @author      Magento Core Team <core@magentocommerce.com>
 */

/**
 * @deprecated
 * Class Mage_Adminhtml_Block_Media_Uploader
 */
class Mage_Adminhtml_Block_Media_Uploader extends Mage_Uploader_Block_Multiple
{
    /**
     * Constructor for uploader block
     */
    public function __construct()
    {
        parent::__construct();
        $this->getUploaderConfig()->setTarget(Mage::getModel('adminhtml/url')->addSessionParam()->getUrl('*/*/upload'));
        $this->getUploaderConfig()->setFileParameterName('file');
    }
}

किसी को भी मुझे पता है कि कैसे संभव के रूप में कम से कम कोड परिवर्तन के साथ इसे ठीक करने के लिए।


क्या आप getUploaderकृपया विधि की सामग्री पोस्ट कर सकते हैं ?
राफेल डिजिटल पियानोवाद

कृपया जाँचें, मेरा प्रश्न अपडेट किया गया।
विक्की देव


1
@TejabhagavanKollepara कृपया इसे डुप्लिकेट चिह्नित करने से पहले प्रश्न में दोनों मामलों की जाँच करें।
विक्की देव

1
@ विक्कीडेव ने इसे यहां हल किया है magento.stackexchange.com/questions/141775/…
Qaisar Satti

जवाबों:


17

Mage_Adminhtml_Block_Media_UploaderSUPEE-8788 (और 1.9.3) के बाद पदावनत किया जाता है। इस प्रकार कई पिछड़े असंगतता परिवर्तन हैं जो अपलोडर का उपयोग करके मॉड्यूल को तोड़ते हैं।

मैंने पहले सोचा था कि एक छोटा सा बदलाव इसे ठीक कर देगा लेकिन वास्तव में ऐसा करने का तरीका और है।

1.9.2 और 1.9.3 के साथ संगत गैलरी का उपयोग करके एक मॉड्यूल बनाएं

इसलिए यदि आप एक मॉड्यूल प्रदाता हैं, तो आप 1.9.2 और 1.9.3 के लिए अपने मॉड्यूल के दो अलग-अलग संस्करण नहीं रखना चाहते। अपने कोड को दोनों के साथ संगत बनाने का तरीका यहां दिया गया है:

अपनी ब्लॉक _prepareLayoutविधि में आपको निम्नलिखित कार्य करने होंगे:

बदलने के:

 $this->getUploader()->getConfig()
            ->setUrl($url)
            ->setFileField('image')
            ->setFilters(array(
                'images' => array(
                    'label' => Mage::helper('adminhtml')->__('Images (.gif, .jpg, .png)'),
                    'files' => array('*.gif', '*.jpg','*.jpeg', '*.png')
                )
            ));

साथ में:

    if (class_exists("Mage_Uploader_Block_Abstract")) {
        // PATCH SUPEE-8788 or Magento 1.9.3
        $this->getUploader()->getUploaderConfig()
            ->setFileParameterName('image')
            ->setTarget($url);

        $browseConfig = $this->getUploader()->getButtonConfig();
        $browseConfig
            ->setAttributes(
                array("accept"  =>  $browseConfig->getMimeTypesByExtensions('gif, png, jpeg, jpg'))
            );
    } else {
        $this->getUploader()->getConfig()
            ->setUrl($url)
            ->setFileField('image')
            ->setFilters(array(
                'images' => array(
                    'label' => Mage::helper('adminhtml')->__('Images (.gif, .jpg, .png)'),
                    'files' => array('*.gif', '*.jpg','*.jpeg', '*.png')
                )
            ));
    }

जैसा कि आप देख सकते हैं कि मैं class_existsजाँच कर रहा हूँ कि SUPEE-8788 या Magento 1.9.3 लागू है या नहीं।

तो फिर gallery.phtmlआप को बदलने की जरूरत है:

var <?php echo $_block->getJsObjectName(); ?> = new Product.Gallery('<?php echo $_block->getHtmlId() ?>', <?php if ($_block->getElement()->getReadonly()):?>null<?php else:?><?php echo $_block->getUploader()->getJsObjectName() ?><?php endif;?>, <?php echo $_block->getImageTypesJson() ?>);

साथ में:

<?php if (class_exists("Mage_Uploader_Block_Abstract")): ?>
    var <?php echo $_block->getJsObjectName(); ?> = new Product.Gallery('<?php echo $_block->getHtmlId() ?>', <?php echo $_block->getImageTypesJson() ?>);
<?php else: ?>
    var <?php echo $_block->getJsObjectName(); ?> = new Product.Gallery('<?php echo $_block->getHtmlId() ?>', <?php if ($_block->getElement()->getReadonly()):?>null<?php else:?><?php echo $_block->getUploader()->getJsObjectName() ?><?php endif;?>, <?php echo $_block->getImageTypesJson() ?>);
<?php endif; ?>

फिर लेआउट फ़ाइल के लिए, आप इसे इस तरह से कर सकते हैं:

<reference name="head">
    <action method="addJs"><file helper="module/getFlowMin" /></action>
    <action method="addJs"><file helper="module/getFustyFlow" /></action>
    <action method="addJs"><file helper="module/getFustyFlowFactory" /></action>
    <action method="addJs"><file helper="module/getAdminhtmlUploaderInstance" /></action>
</reference>

moduleअपने सहायक वर्ग पहचानकर्ता के साथ बदलें और अपने मॉड्यूल Data.phpसहायक में निम्नलिखित जोड़ें:

protected function _isNoFlashUploader()
{
    return class_exists("Mage_Uploader_Block_Abstract");
}

public function getFlowMin()
{
    return $this->_isNoFlashUploader() ? "lib/uploader/flow.min.js" : null;
}

public function getFustyFlow()
{
    return $this->_isNoFlashUploader() ? "lib/uploader/fusty-flow.js" : null;
}

public function getFustyFlowFactory()
{
    return $this->_isNoFlashUploader() ? "lib/uploader/fusty-flow-factory.js" : null;
}

public function getAdminhtmlUploaderInstance()
{
    return $this->_isNoFlashUploader() ? "mage/adminhtml/uploader/instance.js" : null;
}

1
के setUrlसाथ भी बदल जाते हैं setTarget
क़ैसर सत्ती

यह Magento 1.9.3.8 पर सीएसवी फ़ाइल अपलोड समस्या के लिए काम करता है। महान!
इगोर रेवेनको

3

@ रिपेल उत्तर में जोड़कर आपको तीन फ़िक्सेस जोड़ने की आवश्यकता है

पहले ठीक करो

Spacename_Moduelname_Block_Adminhtml_Modulename_Edit_Tab_Images.php

protected $_uploaderType = 'uploader/multiple';
public function __construct()
{
    parent::__construct();
    $this->setTemplate('moduelname/gallery.phtml');
    ....
}
protected function _prepareLayout()
    {
 $this->setChild('uploader',
            $this->getLayout()->createBlock($this->_uploaderType)
        );

        $this->getUploader()->getUploaderConfig()
            ->setFileParameterName('image')
            ->setTarget(Mage::getModel('adminhtml/url')->addSessionParam()->getUrl('*/*/image'));

        $browseConfig = $this->getUploader()->getButtonConfig();
        $browseConfig
            ->setAttributes(array(
                'accept' => $browseConfig->getMimeTypesByExtensions('gif, png, jpeg, jpg')
            ));
     return parent::_prepareLayout();
    }

दूसरा व्‍यवस्‍थापक html / default / default / modulename / gallery.phtml फ़ाइल में तय करें

 <script type="text/javascript">
//<![CDATA[
var <?php echo $_block->getJsObjectName(); ?> = new Product.Gallery('<?php echo $_block->getHtmlId() ?>', <?php echo $_block->getImageTypesJson() ?>);
//]]>
</script>

तीसरा जेएस भाग लेआउट / मॉड्यूल.xml को ठीक करें

<reference name="head">
            <action method="addJs"><file>lib/uploader/flow.min.js</file></action>
            <action method="addJs"><file>lib/uploader/fusty-flow.js</file></action>
            <action method="addJs"><file>lib/uploader/fusty-flow-factory.js</file></action>
            <action method="addJs"><file>mage/adminhtml/uploader/instance.js</file></action>
</reference>

फ़ाइलों को ठीक करने के लिए फ़ाइलें

पहला फिक्स ऐप / कोड / कोर / मैज / एडमिनकैम / ब्लॉक / कैटलॉग / उत्पाद / हेल्पर / फॉर्म / गैलरी / सामग्री.php

दूसरा फिक्स ऐप / डिज़ाइन / व्यवस्थापक / डिफ़ॉल्ट / डिफ़ॉल्ट / टेम्पलेट / कैटलॉग / उत्पाद / सहायक / गैलरी.phtml


यह वास्तव में उपयोगी होगा, यदि आप फ़िक्सेस के लिए फ़ाइलों का उल्लेख करते हैं।
विक्की देव

@VickyDev ने फ़ाइल नाम भी जोड़ा।
क़ैसर सत्ती

धन्यवाद, आप जवाब देने के लिए, लेकिन यह बात कोर मैगेंटो उत्पाद छवियों में होती है, इसलिए मुझे पहले दो बदलाव करने की आवश्यकता कहां है? पैच 8788 स्थापित के साथ Magento CE 1.9.2.4।
विक्की देव

1
लेकिन मुझे यहाँ चैट डिस्प्ले में जाने के लिए कोई लिंक नहीं दिख रहा है।
विक्की देव

1
@QaisarSatti ने देखा कि मैंने अपना कोड अपडेट कर लिया है, इसलिए यह 1.9.2 और 1.9.3 दोनों के साथ संगत है;
राफेल एट डिजिटल पियानिज़्म

2

फिक्स्ड - मैगेंटो संस्करण सीई 1.7.0.2 - 1.9.2.4 के पैट 8788 की स्थापना के बाद छवि अपलोड मुद्दा।

I was able to fix it,Please Follow following instruction.

चरण >> 1: सफलतापूर्वक 8788 सुरक्षा पैच स्थापित करने के बाद, कृपया व्यवस्थापक पैनल पर जाएं और सभी मैगेंटो कैश को फ्लश करें । इसके बाद अपने एडमिन पैनल और रीलॉगिन को एडमिन पैनल में लॉगआउट करें

चरण >> 2: इंडेक्स मैनेजमेंट पर जाएं और सभी मैगेंटो कैश को एक बार फिर से फ्लश करने के बाद सभी डेटा को रिवाइंड करें

चरण >> 3: यह बहुत ही महत्वपूर्ण कदम है, अपने ब्राउज़र कैश (Ctrl + Shift + हटाएं) का इतिहास कुकीज़ सहित ब्राउज़र से सभी ब्राउज़िंग डेटा को हटा दें।

चरण >> 4: कैटलॉग पर जाएं >> उत्पाद प्रबंधन, किसी भी उत्पाद की नई छवि जोड़ें, अब आप सब कुछ ठीक देख सकते हैं।


0

मैं आपके इसी मुद्दे का सामना कर रहा था 2. मेरे मामले में यह एक कस्टम मॉड्यूल द्वारा अधिलेखित की जा रही फ़ाइल के कारण था:

एप्लिकेशन / डिजाइन / adminhtml / डिफ़ॉल्ट / डिफ़ॉल्ट / टेम्पलेट / सूची / उत्पाद / सहायक / gallery.phtml

मैं आपको यह देखने के लिए जाँच करने का सुझाव दूंगा कि क्या आपके पास उस ब्लॉक के टेम्पलेट को ओवरराइट करने वाला एक समान टेम्पलेट है Mage_Adminhtml_Block_Catalog_Product_Helper_Form_Gallery_Contentऔर यदि ऐसा है, तो Supee-8788पैच को ओवरराइटिंग फ़ाइल पर लागू करें ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.