ইমেজ চয়নকারী প্যারামিটার সহ নতুন উইজেট ম্যাজেন্টো 2, চিত্র সংরক্ষণ করে না


18

আমি একটি নতুন উইজেট তৈরি করি এবং পরামিতিগুলির মধ্যে একটি চিত্র চয়নকারী, আমি কেবল এই কোডটি ব্যবহার করি । সবকিছু ভাল দেখাচ্ছে। আমি মিডিয়া ফোল্ডারটি খুলতে পারি এবং আমি যে ছবিটি ব্যবহার করতে চাই তা চয়ন করতে পারি। আমি যখন ছবিটি বেছে নিই, ফর্মের চিত্র ক্ষেত্রটি এই মানটি দিয়ে পূর্ণ হবে:

http://local.magento.com/admin/cms/wysiwyg/directive/___directive/e3ttZWRpYSB1cmw9Ind5c2l3eWcvcHVycGxlLmpwZyJ9fQ,,/key/4c150d984998702b74709bb8f05820aff2f85a968d47e50f9638b7d2a7b1ced3/

তবে আমি যখন ফর্ম উইজেট ডেটা সংরক্ষণ করি তখন ছবির ক্ষেত্রে এই মানটি থাকে: {{media url=

বেশি না. আমি কীভাবে এটি সমাধান করতে পারি?


2
সমস্যাটি ছিল কনফিগারেশনে। কনফিগারেশন> সাধারণ> বিষয়বস্তু পরিচালনায়, "ক্যাটালগের জন্য
ডাব্লুওয়াইএসআইডাব্লুওয়াইজিতে

1
এই পদ্ধতির সাথে সমস্যাটি হ'ল আপনি হার্ডকোডযুক্ত চিত্রটি কাজ করবে না বলে আপনি এক
vর্ষা

উত্তর:


1

আপনি যদি কোনও ছবি আপলোড করতে চান তবে আপনি কেন চিত্র নির্বাচন বোতামটি ব্যবহার করবেন না?
আপনি যদি সম্পাদক পছন্দ করেন তবে এটি ব্যবহার করুন। তবে সম্পাদক ব্যবহার করে কোনও চিত্র আপলোড করা সঠিক উপায় নয়। পরিবর্তে আপনি বোতামটি ব্যবহার করতে পারেন। কীভাবে করতে হয় তা না জানলে। আমাকে ব্যাখ্যা করতে দাও.

এখানে আমার কোড। নীচের কোডটি ব্লক ফাইলে লিখিত যা একটি বোতাম তৈরি করে।

$fieldset->addField(
        'image',
        'file',
        [
            'name' => 'image',
            'label' => __('Image'),
            'title' => __('Image'),
        ]
    );

চিত্র হল ডাটাবেস ক্ষেত্রের নাম। আপনার ক্ষেত্রে এটি উইসইউইগ এডিটর I আমি সঠিকটি জানি না তবে একবার আপনার ডাটাবেসে পরীক্ষা করে দেখুন।

নীচের কোডটি আপনার টেবিলের মধ্যে চিত্রটি সংরক্ষণ করতে ব্যবহৃত হয়। এখন এই কোডটি আপনার নিয়ামকের মধ্যে রাখুন।

<?php
namespace Vendor\Module\Controller\Adminhtml\Slider;

use Magento\Framework\App\Filesystem\DirectoryList;

class Save extends \Magento\Backend\App\Action

{

protected $_mediaDirectory;
protected $_fileUploaderFactory;

public function __construct(
    \Magento\Backend\App\Action\Context $context,        
    \Magento\Framework\Filesystem $filesystem,
    \Magento\MediaStorage\Model\File\UploaderFactory $fileUploaderFactory
) 
{
    $this->_mediaDirectory = $filesystem->getDirectoryWrite(\Magento\Framework\App\Filesystem\DirectoryList::MEDIA);
    $this->_fileUploaderFactory = $fileUploaderFactory;
    parent::__construct($context);
}

public function execute()
{
    /*For Image Upload*/

    /** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */
    $resultRedirect = $this->resultRedirectFactory->create();

    try{
        $target = $this->_mediaDirectory->getAbsolutePath('imagefolder/');

        $targetOne = "imagefolder/";
        /** @var $uploader \Magento\MediaStorage\Model\File\Uploader */
        $uploader = $this->_fileUploaderFactory->create(['fileId' => 'image']);
        /** Allowed extension types */
        $uploader->setAllowedExtensions(['jpg', 'jpeg', 'gif', 'png', 'zip', 'doc']);
        /** rename file name if already exists */
        $uploader->setAllowRenameFiles(true);
        /** upload file in folder "mycustomfolder" */
        $result = $uploader->save($target);
        /*If file found then display message*/
        if ($result['file']) 
        {
            $this->messageManager->addSuccess(__('File has been successfully uploaded')); 
        }
    }
    catch (Exception $e) 
    {
        $this->messageManager->addError($e->getMessage());
    }
    /*For Image Upload Finished*/ 

    $data = $this->getRequest()->getPostValue();

    $data['image'] = $targetOne.$result['file'];

    if (!$data) {
        $this->_redirect('*/*/filenaem');
        return;
    }
    try {

        $rowData = $this->_objectManager->create('Vendor\Module\Model\Slider');

        $rowData->setData($data);

        if (isset($data['id'])) 
        {
            $rowData->setEntityId($data['id']);
        }
        $rowData->save();
        $this->messageManager->addSuccess(__('Row data has been successfully saved.'));
    } 
    catch (Exception $e) 
    {
        $this->messageManager->addError(__($e->getMessage()));
    }
    $this->_redirect('*/*/index');

    return $this->resultRedirectFactory->create()->setPath(
        '*/*/upload', ['_secure'=>$this->getRequest()->isSecure()]
    );
}

/**
 * Check Category Map permission.
 *
 * @return bool
 */
protected function _isAllowed()
{
    return $this->_authorization->isAllowed('Vendor_Module::Module_list');
}

}

এর পরে আপনি ফলাফলের জন্য এটি পিটিএইচটিএমএল করতে চান..এইচটিএমএল ফাইলটিতে বেলো কোড লিখুন।
এখানে কোড।

    $collection = $block->getCollectionFor();
    $_objectManager = \Magento\Framework\App\ObjectManager::getInstance(); //instance of\Magento\Framework\App\ObjectManager
    $storeManager = $_objectManager->get('Magento\Store\Model\StoreManagerInterface'); 
    $currentStore = $storeManager->getStore();
//Base URL for saving image into database.
    $mediaUrl = $currentStore->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);

getCollectionfor () আমার ব্লকে লেখা আছে so সুতরাং সেই অনুযায়ী, আপনার ব্লক ফাইল হিসাবে আবেদন করা উচিত।
আমি আশা করি এটি আপনার পক্ষে সহায়ক। আপনার যদি কোন জিজ্ঞাসা থাকে তবে আমাকে জানান।


আমি অবজেক্ট ম্যানেজার ব্যবহার করে পিএইচটিএমএল ফাইলে ফলাফল হিসাবে ডেকেছি এটি সঠিকভাবে হবে না তবে আমি এখানে আরও কোড লিখতে চাই না that's তাই আমি এটি ব্যবহার করি if আপনি যদি কারখানার পদ্ধতি ব্যবহার করতে চান তবে এটি ঠিক হয়ে যাবে।
বিষ্ণু সালুনকে

0

আমি কোডটি যাচাই করে দেখেছি যে ডিরেক্টরি থেকে চিত্রের ইউআরএল পাওয়ার কোডটি অন্তর্ভুক্ত নেই। এই সমস্যাটি সমাধান করার জন্য আপনাকে এটিতে কাজ করতে হবে। চিত্রটির URL অন্তর্ভুক্ত করার জন্য কোডটি অনুপস্থিত is


0

দেখে মনে হচ্ছে এটি ম্যাজেন্টো ২.১-এ একটি পরিচিত সমস্যা। এই বিষয়ে আরও তথ্যের জন্য তাদের গিথুবটির একটি লিঙ্ক এখানে। https://github.com/magento/magento2/issues/6138 এটি চেষ্টা করার জন্য কয়েকটি পৃথক সমাধান থাকতে পারে বলে মনে হচ্ছে।


0

আপনি সর্বশেষ প্রতিশ্রুতি পর্যালোচনা করতে পারেন এবং গিথুব এটির জন্য পথ তৈরি করতে পারেন এবং এটি প্রয়োগ করার চেষ্টা করতে পারেন https://github.com


0

Jquery ব্যবহার করে, আমরা একটি ফোল্ডারে চিত্রটি সংরক্ষণ করতে পারি।

স্ক্রিপ্টে, এই কোডটি লিখুন

<script>
    function file_up(id)
    {
        var up_id = 'uploadfiles'+id;
        var upremv_id = 'upload'+id;
        var files = document.getElementById(up_id).files;
        for (var i = 0; i < files.length; i++)
        {
            uploadFile(files[i],up_id,upremv_id);
        }
    }
    function uploadFile(file,up_id,upremv_id){
        var url = "<?php echo $baseurl ?>helloworld/index/upload";
        var xhr = new XMLHttpRequest();
        var fd = new FormData();
        xhr.open("POST", url, true);
        xhr.onreadystatechange = function() {
            if (xhr.readyState == 4 && xhr.status == 200) {
                jQuery('#imgna'+up_id).val(xhr.responseText);
                console.log(xhr.responseText); // handle response.
                jQuery('#'+up_id).remove();
                jQuery('#'+upremv_id).remove();
                var img_va = '<img class="image" src="<?php echo $mediaUrl.'custom/'?>'+xhr.responseText+'">';
                jQuery('#pre'+up_id).html(img_va);
            }
        };
        fd.append('uploaded_file', file);

</script>

তারপরে, আপনার কাস্টম নিয়ামকটিতে:

শ্রেণি আপলোড প্রসারিত হয় \ ম্যাজেন্টো me ফ্রেমওয়ার্ক \ অ্যাপ \ ক্রিয়া \ ক্রিয়া {

public function __construct(\Magento\Framework\App\Action\Context $context)
{
    parent::__construct($context);
}

public function execute()
{
    $objectManager = \Magento\Framework\App\ObjectManager::getInstance();

    $fileSystem = $objectManager->create('\Magento\Framework\Filesystem');
    $mediaPath = $fileSystem->getDirectoryRead(\Magento\Framework\App\Filesystem\DirectoryList::MEDIA)->getAbsolutePath();
    $media = $mediaPath . 'custom/';

    //  exit;


    $file_name = rand() . $_FILES['uploaded_file']['name'];
    $file_size = $_FILES['uploaded_file']['size'];
    $file_tmp = $_FILES['uploaded_file']['tmp_name'];
    $file_type = $_FILES['uploaded_file']['type'];

    if (move_uploaded_file($file_tmp, $media . $file_name)) {
        echo $file_name;
    } else {
        echo "File was not uploaded";
    }
}

}

দয়া করে রেফারেন্সটি কীভাবে মেজেন্টো 2 এ কোনও ফোল্ডারে কোনও চিত্র আপলোড সংরক্ষণ করবেন?

এবং পর্যবেক্ষক ব্যবহার করে, আপনি পোস্টের মধ্যে চিত্রটির মান পেতে পারেন..আপনি ইনপুট ফিল্ড ট্যাগে ডেটা-ফর্ম-পার্ট = "প্রোডাক্ট_ফর্ম" ব্যবহার করুন।

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