Hiển thị hình thu nhỏ và xóa hình ảnh trong mẫu quản trị mô-đun tùy chỉnh


8

Tôi đang cố gắng hiển thị hình ảnh thu nhỏ trong mẫu chỉnh sửa mô-đun quản trị viên tùy chỉnh của mình như thế này nhập mô tả hình ảnh ở đây Ngay bây giờ tôi đang sử dụng cái này addfield.

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

Tôi đã xem lib/Varien/Data/Form/Element/Image.phpvà tìm thấy mã này sử dụng url hình ảnh ở đó.

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

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

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

Nhưng tôi không lưu trữ hình ảnh trong thư mục phương tiện cho mô-đun này. Tôi đang tải lên hình ảnh từ bộ điều khiển trong ram_imagesthư mục.

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

Ngoài ra, tôi không thể thay đổi URL từ Image.phptệp vì nó sẽ ảnh hưởng đến các mô-đun hệ thống khác. Có cách giải quyết nào ở đây không. Xin đề xuất một giải pháp.

Và tôi cũng muốn xóa hình ảnh bằng cách sử dụng hộp kiểm được cung cấp bên dưới nút tải lên.

Cảm ơn.

Câu trả lời:


9

Thêm mã trong tệp điều khiển của bạn

Hàm công khai saveAction () 
{
    ...

    if (! trống ($ _FILES ['main_image'] ['name'])) 
    {
        $ data ['main_image'] = $ _FILES ['main_image'] ['name'];
    } 
    khác 
    {
        if (isset ($ data ['main_image'] ['xóa']) && $ data ['main_image'] ['xóa'] == 1) 
        {
            if ($ data ['main_image'] ['value']! = '')
                $ this-> removeFile ($ data ['main_image'] ['value']);
            $ data ['main_image'] = '';
        }
        khác 
        {
            bỏ đặt ($ data ['main_image']);
        }
    }

    ...
}
chức năng công cộng removeFile (tập tin $) 
{
        $ _rcper = Mage :: helper ('ram');
        $ file = $ _helper-> updateDirSepereator ($ file);
        $ thư mục = Mage :: getBaseDir ('media'). DS .'ram_images ';
        $ io = new Varien_Io_File ();
        $ result = $ io-> rmdir (thư mục $, đúng);
}

Tạo chức năng dưới đây trong Lớp trợ giúp

 Cập nhật chức năng công cộngDirSepereator ($ path) 
    {
        trả về str numplace ('\\', DS, $ path);
    }

tôi sẽ thử nó, tôi hy vọng nó hoạt động
HungryDB

6

Thêm 'enctype'’ ⇒ 'multipart/form-data'điều đó sẽ giúp để có được một cái gì đó trong $_FILES

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

Bạn nên có một cái gì đó trông như thế này:

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

    )

);

Sau đó, trong /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',
));

Sau đó, trong /app/code/local/Chilly/ModName/controllers/Adminhtml/ModuleNameControll.php trong 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) { }
       }

Biểu mẫu chỉnh sửa của bạn sẽ được hiển thị hình ảnh như ..

nhập mô tả hình ảnh ở đây


Tôi đã tải lên hình ảnh. tôi chỉ muốn nó hiển thị dưới dạng hình thu nhỏ trên mẫu chỉnh sửa.
HungryDB

Mã ở trên sẽ được hiển thị hình ảnh trong mẫu chỉnh sửa của bạn.
Supravat Thứ

Tất nhiên rồi. Nhưng tôi đang sử dụng $path = Mage::getBaseDir('media') . DS .'ram_images';đường dẫn này để tải lên hình ảnh.
HungryDB

4

Tôi nghĩ rằng tôi đã có một giải pháp đơn giản ở đây để hiển thị hình ảnh thu nhỏ.

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

chỉ lưu tên thư mục trong bảng và nó hoạt động.

Để xóa hình ảnh chỉ cần thêm mã sau vào saveAction()chức năng điều khiển mô-đun .

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

Nó đã làm việc.


Xin chào @HungryDB, điều này cũng có hiệu quả với tôi, nhưng một phần. Các hình ảnh đang được tải lên nhưng hình thu nhỏ không hiển thị trên biểu mẫu, chỉ có nút duyệt. Tôi có phải thêm một chức năng để trợ giúp cũng để làm cho nó hoạt động không?
bestwebdevs

sử dụng loại trườngimage
HungryDB

Xin chào @HungryDB, tôi đã làm, nhưng nó vẫn chỉ hiển thị nút.
bestwebdevs
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.