Tampilkan gambar kecil dan hapus gambar dalam formulir admin modul khusus


8

Saya mencoba untuk menampilkan gambar mini di formulir edit modul admin kustom saya seperti ini. masukkan deskripsi gambar di sini Sekarang saya menggunakan ini addfield.

 $fieldset->addField('main_image', 'image', array(
        'label'     => Mage::helper('ram')->__('Image'),
        'required'  => false,
        'name'      => 'main_image',
    ));

Saya melihat lib/Varien/Data/Form/Element/Image.phpdan menemukan kode ini yang menggunakan gambar url di sana.

public function getElementHtml()
    {
        $html = '';

        if ((string)$this->getValue()) {
            $url = $this->_getUrl();

            if( !preg_match("/^http\:\/\/|https\:\/\//", $url) ) {
                $url = Mage::getBaseUrl('media') . $url;
            }

Tapi saya tidak menyimpan gambar di folder media untuk modul ini. Saya mengunggah gambar dari pengontrol di ram_imagesfolder.

 $path = Mage::getBaseDir('media') . DS .'ram_images' ;
   $uploader->save($path, $_FILES['main_image']['name'] );

Juga, saya tidak dapat mengubah URL dari Image.phpfile karena akan mempengaruhi modul sistem lainnya. apakah ada solusi di sini. Mohon saran solusinya.

Dan saya juga ingin menghapus gambar menggunakan kotak centang yang disediakan di bawah tombol unggah.

Terima kasih.

Jawaban:


9

Tambahkan kode dalam file pengontrol Anda

fungsi publik saveAction () 
{
    ...

    if (! kosong ($ _FILES ['main_image'] ['name'])) 
    {
        $ data ['main_image'] = $ _FILES ['main_image'] ['name'];
    } 
    lain 
    {
        if (isset ($ data ['main_image'] ['delete']) && $ data ['main_image'] ['delete'] == 1) 
        {
            if ($ data ['main_image'] ['value']! = '')
                $ this-> removeFile ($ data ['main_image'] ['value']);
            $ data ['main_image'] = '';
        }
        lain 
        {
            tidak disetel ($ data ['main_image']);
        }
    }

    ...
}
fungsi publik removeFile ($ file) 
{
        $ _helper = Mage :: helper ('ram');
        $ file = $ _helper-> updateDirSepereator ($ file);
        $ directory = Mage :: getBaseDir ('media'). DS .'ram_images ';
        $ io = Varien_Io_File () baru;
        $ result = $ io-> rmdir ($ direktori, true);
}

Buat fungsi di bawah ini di Helper Class

 updateDirSepereator fungsi publik ($ path) 
    {
        return str_replace ('\\', DS, $ path);
    }

saya akan mencoba ini, saya harap ini berhasil
HungryDB

6

Tambahkan 'enctype'’ ⇒ 'multipart/form-data'Itu akan membantu mendapatkan sesuatu $_FILES

di /app/code/local/Chilly/ModName/Block/Adminhtml/ModName/Edit/Form.php

Anda harus memiliki sesuatu yang terlihat seperti ini:

$form = new Varien_Data_Form(array(

         'id' => 'edit_form',

        'action' => $this->getUrl('*/*/save', array('id' =>    $this->getRequest()->getParam('id'))),

        'method' => 'post',

        'enctype' => 'multipart/form-data'

    )

);

Kemudian di /app/code/local/Chilly/ModName/Block/Adminhtml/ModName/Edit/Tab/Form.php

$fieldset->addField('main_image', 'image', array(
    'label'     => Mage::helper('ram')->__('Image'),
    'required'  => false,
    'name'      => 'main_image',
));

Kemudian di /app/code/local/Chilly/ModName/controllers/Adminhtml/ModuleNameController.php di saveAction()

        if(isset($_FILES['main_images']['name'])) {
          try {
            $uploader = new Varien_File_Uploader('main_images');
            $uploader->setAllowedExtensions(array('jpg','jpeg','gif','png')); // or pdf or anything
            $uploader->setAllowRenameFiles(false);
            $uploader->setFilesDispersion(false);
            $path = Mage::getBaseDir('media') . DS. 'ram_images'.DS ;
            $destFile = $path.$_FILES['main-images']['name'];
            $filename = $uploader->getNewFileName($destFile);
            $uploader->save($path, $filename);
            $data[main_images] = 'ram_images'. $filename;
          }catch(Exception $e) { }
       }

Formulir edit Anda akan menampilkan gambar seperti ..

masukkan deskripsi gambar di sini


Saya sudah mengunggah gambar. saya hanya ingin ditampilkan sebagai thumbnail pada formulir edit.
HungryDB

Kode di atas akan menampilkan gambar dalam formulir edit Anda.
Supravat Mondal

Ya, mungkin. Tapi saya menggunakan $path = Mage::getBaseDir('media') . DS .'ram_images';jalur ini untuk mengunggah gambar.
HungryDB

4

Saya pikir saya punya solusi sederhana di sini untuk menampilkan gambar mini.

if(isset($_FILES['main_images']['name'])) {
          try {
            $uploader = new Varien_File_Uploader('main_images');
            $uploader->setAllowedExtensions(array('jpg','jpeg','gif','png'));
            $uploader->setAllowRenameFiles(false);
            $uploader->setFilesDispersion(false);
            $path = Mage::getBaseDir('media') . / ;
            $uploader->save($path, $_FILES['main_images']['name']);
            $data[main_images] ='ram_images'. $_FILES['main_images']['name'];
          }catch(Exception $e) { }
       }

hanya menyimpan nama folder juga di tabel dan itu berhasil.

Untuk menghapus gambar, tambahkan kode berikut ke saveAction()fungsi pengontrol modul .

if (!empty( $_FILES['main_image']['name'] )) 
 {
    $data['main_image'] =  $_FILES['main_image']['name'] ;
 } 
 else 
 {
     if (isset($data['main_image']['delete']) && $data['main_image']['delete'] == 1) 
     {
         $data['main_image']='';
     }
     else 
     { 
         unset($data['main_iamge']);
      }
 }

Itu berhasil.


Hai @HungryDB, ini berhasil juga untuk saya, tetapi sebagian. Gambar sedang diunggah tetapi gambar mini tidak muncul di formulir, hanya tombol telusuri. Apakah saya harus menambahkan fungsi ke helper juga untuk membuatnya berfungsi?
bestwebdevs

gunakan tipe bidangimage
HungryDB

Hai @HungryDB, saya lakukan, tetapi masih hanya menampilkan tombol.
bestwebdevs
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.