Mostra l'immagine in miniatura ed elimina l'immagine nel modulo di amministrazione del modulo personalizzato


8

Sto cercando di visualizzare un'immagine in miniatura nel mio modulo di modifica del modulo di amministrazione personalizzato come questo inserisci qui la descrizione dell'immagine In questo momento sto usando questo addfield.

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

Ho guardato lib/Varien/Data/Form/Element/Image.phpe trovato questo codice che utilizza l'URL delle immagini lì.

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

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

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

Ma non sto memorizzando le immagini nella cartella multimediale per questo modulo. Sto caricando le immagini dal controller nella ram_imagescartella.

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

Inoltre, non ho potuto modificare l'URL dal Image.phpfile in quanto influirà su altri moduli di sistema. c'è qualche soluzione qui? Si prega di suggerire una soluzione.

E voglio anche eliminare l'immagine usando la casella di controllo fornita sotto il pulsante di caricamento.

Grazie.

Risposte:


9

Aggiungi il codice nel tuo file controller

funzione pubblica saveAction () 
{
    ...

    if (! empty ($ _FILES ['main_image'] ['name'])) 
    {
        $ data ['main_image'] = $ _FILES ['main_image'] ['name'];
    } 
    altro 
    {
        if (isset ($ data ['main_image'] ['delete']) && $ data ['main_image'] ['delete'] == 1) 
        {
            if ($ data ['main_image'] ['value']! = '')
                $ This-> RemoveFile ($ dati [ 'main_image'] [ 'valore']);
            $ data ['main_image'] = '';
        }
        altro 
        {
            unset (dati $ [ 'main_image']);
        }
    }

    ...
}
funzione pubblica removeFile ($ file) 
{
        $ _helper = Mage :: helper ('ram');
        $ file = $ _helper-> updateDirSepereator ($ file);
        $ directory = Mage :: getBaseDir ('media'). DS.'Ram_images ';
        $ io = new Varien_Io_File ();
        $ risultato = $ io-> rmdir ($ directory, true);
}

Creare la funzione di seguito in Helper Class

 funzione pubblica updateDirSepereator ($ percorso) 
    {
        return str_replace ('\\', DS, $ percorso);
    }

proverò questo, spero che
funzioni

6

Aggiungi 'enctype'’ ⇒ 'multipart/form-data'Questo dovrebbe aiutare a ottenere qualcosa $_FILES

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

Dovresti avere qualcosa di simile a questo:

$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'

    )

);

Quindi in /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',
));

Quindi in /app/code/local/Chilly/ModName/controllers/Adminhtml/ModuleNameController.php in 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) { }
       }

Il modulo di modifica verrà visualizzato come ..

inserisci qui la descrizione dell'immagine


Ho già caricato l'immagine. voglio solo che venga visualizzato come miniatura sul modulo di modifica.
HungryDB,

Sopra il codice verrà visualizzata l'immagine nel modulo di modifica.
Supravat Mondal,

Sì probabilmente. Ma sto usando $path = Mage::getBaseDir('media') . DS .'ram_images';questo percorso per caricare immagini.
HungryDB,

4

Penso di avere una soluzione semplice per visualizzare l'immagine in miniatura.

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) { }
       }

appena salvato anche il nome della cartella nella tabella e ha funzionato.

Per eliminare l'immagine appena aggiunta il seguente codice alla saveAction()funzione dei controller del modulo .

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']);
      }
 }

Ha funzionato.


Ciao @HungryDB, ha funzionato anche per me, ma in parte. Le immagini vengono caricate ma la miniatura non viene visualizzata nel modulo, solo il pulsante Sfoglia. Devo aggiungere una funzione anche per l'helper per farlo funzionare?
bestwebdevs,

usa il tipo di campoimage
HungryDB

Ciao @HungryDB, l'ho fatto, ma mostra ancora solo il pulsante.
bestwebdevs,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.