管理フォームフィールドでカスタムHTML要素を使用する方法


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

    ));

これは私のimage.phpファイルです

 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;
}

これはレンダラーをaddfield形式で使用する正しい方法ですか?addfield形式でレンダラーを使用する方法


あなたは管理フォームのフィールドについて理解していますか
Amit Bera

はい、管理者フォームフィールド
ND17、2015

回答:


13

レンダラーファイル:

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;
    }
}

あなたのform.php

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

これを使用すると、管理フォームフィールドでカスタムHTMLを使用できます


カスタムhtml要素と呼ばれる必要があります。基本的な
マゼント

@ ND17この例では、レンダラーファイル名はImages.phpである必要がありますよね。
SagarPPanchal

@SagarPPanchalはい
ND17

要素の値を取得するには、を使用します$this->getValue()
ジョー

2

あなたはここでほぼ正しいです私はグリッドにフィールドの画像を表示する私の作業例についてあなたに提案

Grid.php

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

testimonialsconfig.xmlのブロックタグはどこにありますか

レンダーファイルはレンダラーインデックスで定義したものと同じである必要があります

<?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'."' />"; 
        }          
        }
    }  
}     
 ?>

編集

レンダラーを編集フォームで使用すると、管理者の評価編集フォームを確認できます

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);

これがアイデアを得るのに十分であることを願っています。


1
グリッドではなく管理編集フォームに表示したい
ND17

@ ND17、私の最新の回答を見る
liyakat

機能していない....
ND17

それが機能するはずです、ブロックパスを確認してください 'adminhtml'がブロックとレンダラーパスでのデフォルトのmagentoの変更を確認してください
liyakat

これは正しいです?$ renderer = $ this-> getLayout()-> createBlock( 'sellerreview / adminhtml_review_renderer_image'); $ field-> setRenderer($ renderer);
ND17、2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.