Làm cách nào để tải lên nhiều hình ảnh ở dạng lưới bảng quản trị?


8

Ở đây, tôi muốn tải lên nhiều hình ảnh ở dạng lưới bảng quản trị trong magento. Tôi tạo hình ảnh tải lên ở dạng lưới bảng quản trị. Ở đây tôi đính kèm mã hóa tải lên hình ảnh của tôi.

[....]

$fieldset->addField('image', 'image', array(
            'name'      => 'image',
            'label'     => Mage::helper('magentostudy_design')->__('design Image'),
            'title'     => Mage::helper('magentostudy_design')->__('design Image'),
            'required'  => true,
            'disabled'  => $isElementDisabled
        ));
[....]

khi tôi thay đổi nhiều hình ảnh tải lên bằng cách sử dụng đối số này. 'multiple'=> 'multiple' Đây là mã của tôi:

 [....]

    $fieldset->addField('image', 'image', array(
                'name'      => 'image',
                'multiple'  => 'multiple',
                'mulitple'  => true,
                'label'     => Mage::helper('magentostudy_design')->__('design Image'),
                'title'     => Mage::helper('magentostudy_design')->__('design Image'),
                'required'  => true,
                'disabled'  => $isElementDisabled
            ));
    [....]

Và tôi cũng đặt giá trị tên là mảng [] giống như thế này 'name' => 'image[]',. Không, tôi không nhận được bất kỳ kết quả, hình ảnh duy nhất sẽ được tải lên. Làm thế nào để tạo nhiều khái niệm tải lên hình ảnh trong magento. Có ai có thể giúp tôi giải quyết vấn đề này không. Xin vui lòng hướng dẫn cho tôi.


1
Tôi cũng thực sự quan tâm đến câu hỏi này, đã xem nhanh và khối này dường như đứng sau trình tải lên phương tiện truyền thông cho các sản phẩm Mage_Adminhtml_Block_Media_Uploader. Tôi sẽ theo dõi câu hỏi của bạn chặt chẽ :)
Sander Mangel

Thêm multiplekhông có hiệu lực vì điều này : Varien_Data_Form_Element_Abstract::getHtmlAttributes. Trong đó bạn sẽ tìm thấy các thuộc tính thành phần mà bạn được phép đặt. Có lẽ bạn nên viết cho bạn trình kết xuất đầu vào tùy chỉnh cho phép multiple.
Marius

1
Xin chào @SanderMangel ... Cảm ơn bạn đã khuyến khích tôi .. :) -
VIVEK-MDU

Câu trả lời:


6

Tiếp tục bình luận của tôi , đây là cách bạn có thể đạt được những gì bạn cần.
Bạn cần tạo trình kết xuất tùy chỉnh cho trường hình ảnh. Đối với điều này tạo lớp này trong mô-đun của bạn:

<?php 
class [Namespace]_[Module]_Block_Adminhtml_[Entity]_Helper_Image extends Varien_Data_Form_Element_Image{
    //make your renderer allow "multiple" attribute
    public function getHtmlAttributes(){
        return array_merge(parent::getHtmlAttributes(), array('multiple'));
    }
}

Bây giờ ở đầu _prepareForm(nơi bạn thêm các trường của mình) thêm dòng này trước khi thêm bất kỳ trường nào:

$fieldset->addType('image', '[Namespace]_[Module]_Block_Adminhtml_[Entity]_Helper_Image');

Hoặc nếu bạn muốn "chính xác", hãy thêm nó theo cách này:

$fieldset->addType('image', Mage::getConfig()->getBlockClassName('[module]/adminhtml_[entity]_helper_image'));

Điều này sẽ cho Magento biết rằng trong bộ trường hiện tại của bạn, tất cả các trường có loại imagesẽ được hiển thị bởi lớp của riêng bạn.

Bây giờ bạn có thể thêm trường của mình giống như cách bạn đã làm:

$fieldset->addField('image', 'image', array(
            'name'      => 'image[]', //declare this as array. Otherwise only one image will be uploaded
            'multiple'  => 'multiple', //declare input as 'multiple'
            'label'     => Mage::helper('magentostudy_design')->__('design Image'),
            'title'     => Mage::helper('magentostudy_design')->__('design Image'),
            'required'  => true,
            'disabled'  => $isElementDisabled
        ));

Đó là nó.
Đừng quên thay thế trình giữ chỗ ( [Module]và những người khác) bằng các giá trị của bạn.
[EDIT]
Về cơ bản, đây là cách ghi đè / thêm bất kỳ loại đầu vào nào bạn muốn. Tạo lớp riêng của bạn sẽ mở rộng lớp đầu vào ban đầu (hoặc Varien_Data_Form_Element_Abstractnếu bạn thêm một lớp mới) và khai báo nó ở đầu_prepareForm


Xin chào @Marius ... Cảm ơn bạn đã hướng dẫn thích hợp..Tôi có một nghi ngờ..có gì được giới thiệu [Thực thể] và thực thể được đưa ra trong lớp? bạn có thể giải thích nó được không ...
VIVEK-MDU

@ VIVEK-MDU. Thực thể là những gì bạn đang chỉnh sửa. nó có thể là một sản phẩm, một bài viết ... Tên lớp của mẫu đơn của bạn là gì? Từ đó tôi có thể cho bạn biết thực thể nên là gì. Về lý thuyết nó có thể là bất cứ điều gì. Bạn thậm chí có thể loại bỏ nó khỏi tên lớp nhưng tôi đã thêm nó vào đó để giữ sự thống nhất trong mã.
Marius

@Marius cho nhiều tôi phải tạo nút tập tin riêng để tải lên hình ảnh? hoặc làm thế nào nó có thể xử lý nhiều hình ảnh
Keyur Shah

@Marius: Điều này không làm việc cho tôi. Vẫn tải một hình ảnh tải lên. Xin vui lòng bất kỳ đề nghị về nó?
Sukeshini

1
Thông minh ! Câu hỏi này cần được bảo vệ
Ahsan Horani

0

Tôi sử dụng phương pháp này để tạo ra điều tương tự nhưng với mô-đun Aw_blognhưng khi tôi thêm

$fieldset->addType('image', Mage::getConfig()->getBlockClassName('aw_blog/adminhtml_blog_helper_image'));

Mẫu trang cho blog của bài viết của tôi là màu trắng.

PS: trường tải lên một hình ảnh là một thành công nhưng đối với nhiều người thì không.

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

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.