Làm cách nào để sử dụng phần tử html tùy chỉnh trong trường mẫu quản trị viên?


7
$fieldset->addField('rating', 'label', array(
        'name'      => 'rating',
        'label'     => Mage::helper('sellerreview')->__('Rating'),
        'title'     => Mage::helper('sellerreview')->__('Rating'),
        'renderer'  => 'sellerreview/adminhtml_review_renderer_image',

    ));

đây là tập tin image.php của tôi

 public function render(Varien_Object $row) {

    $fullRating = $row->getRating();
    $html = '';

        $html = $html.'<input id="input-21d" name="rating" value='. $fullRating .' type="number" class="rating" min=0 max=5 step=0.5 data-size="sm" data-disabled="true">';


    return $html;
}

Đây có phải là phương pháp đúng để sử dụng trình kết xuất ở dạng addfield không? Cách sử dụng trình kết xuất ở dạng addfield


bạn đang tham gia vào các trường mẫu quản trị
Amit Bera

có trường mẫu quản trị
ND17

Câu trả lời:


13

Tệp kết xuất:

class [NameSpace]_[ModuleName]_Block_Adminhtml_Review_Renderer_Images extends  Varien_Data_Form_Element_Abstract
{
    protected $_element;

    public function getElementHtml()
    {   

        $html = '';

            $html = $html.'<input id="input-21d" name="rating" value='2' type="number" class="rating" min=0 max=5 step=0.5 data-size="sm" data-disabled="true">';


        return $html;
    }
}

trong mẫu của bạn.php

$fieldset->addType('customtype', '[NameSpace]_[ModuleName]_Block_Adminhtml_Review_Renderer_Images');     
     $fieldset->addField('rating', 'customtype', array(
        'name'      => 'rating',
        'label'     => Mage::helper('[modulename]')->__('Rating'),
    ));

bằng cách này, bạn có thể sử dụng html tùy chỉnh trong trường mẫu quản trị viên


Nó nên được gọi là phần tử html tùy chỉnh. không được gọi là renderer trong magento cơ bản
liyakat

@ ND17 Trong ví dụ này, tên tệp của trình kết xuất phải là Images.php, phải không?
SagarPPanchal

@SagarPPanchal Có
ND17

Để có được giá trị của phần tử, sử dụng $this->getValue().
Joe

2

bạn gần như đúng ở đây tôi đề nghị bạn về ví dụ làm việc của tôi để hiển thị hình ảnh của trường trong lưới

Lưới.php

$this->addColumn('after_image', array(
          'header'    => Mage::helper('testimonials')->__('After Image'),
          'align'     =>'left',
          'index'     => 'after_image',
          'renderer'  => 'testimonials/adminhtml_testimonials_edit_renderer_testimonialafimage',
      ));

nơi testimonialslà thẻ block của bạn trong config.xml

và tệp kết xuất của bạn sẽ giống như được xác định trong chỉ mục kết xuất của bạn

<?php
class Yournamespace_Testimonials_Block_Adminhtml_Testimonials_Edit_Renderer_Testimonialafimage extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract
  {
     public function render(Varien_Object $row)
    {       

        if($row->getId()) {             
         $imageName = $row->getAfterImage();                
        $imagePath = Mage::getBaseUrl("media").$imageName; 
        $dirImg = Mage::getBaseDir().str_replace("/",DS,strstr($imagePath,'/media'));        

        if (file_exists($dirImg) && !empty($imageName)) {           
            return  "<img width='50px' height='50px' src='".Mage::getBaseUrl("media").$imageName."' />"; 
        }else{
             return  "<img width='50px' height='50px' src='".Mage::getBaseUrl("media").'testimonial/not-available.jpg'."' />"; 
        }          
        }
    }  
}     
 ?>

BIÊN TẬP

Sử dụng trình kết xuất trong biểu mẫu Chỉnh sửa, bạn có thể thấy biểu mẫu chỉnh sửa xếp hạng của quản trị viên

class Mage_Adminhtml_Block_Rating_Edit_Tab_Form

 $field = $fieldset->addField('stores', 'multiselect', array(
            'label' => Mage::helper('rating')->__('Visible In'),
            'name' => 'stores[]',
            'values' => Mage::getSingleton('adminhtml/system_store')->getStoreValuesForForm()
        ));
        $renderer = $this->getLayout()->createBlock('adminhtml/store_switcher_form_renderer_fieldset_element');
        $field->setRenderer($renderer);

hy vọng điều này sẽ đủ để có được ý tưởng.


1
Tôi muốn hiển thị trong biểu mẫu chỉnh sửa của quản trị viên không ở dạng lưới
ND17

@ ND17, xem câu trả lời cập nhật của tôi
liyakat

không hoạt động ....
ND17

nó sẽ hoạt động, kiểm tra đường dẫn khối của bạn 'adminhtml' để biết sự thay đổi của magento mặc định với đường dẫn khối và trình kết xuất của bạn
liyakat

điều này có đúng không $ renderer = $ this-> getLayout () -> createBlock ('sellreview / adminhtml_Vview_Vnderer_image'); $ field-> setRenderer ($ renderer);
ND17
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.