1

カスタム adminhtml モジュールの構築。シンプルなフォームを使用しています。次のようになります。

<?php

class Namespace_Modulename_Block_Adminhtml_Modulename_Edit_Tab_Form extends Mage_Adminhtml_Block_Widget_Form
{
    protected function _prepareForm()
    {
        $form = new Varien_Data_Form();
        $this->setForm($form);
        $fieldset = $form->addFieldset('modulename_form',array('legend'=>Mage::helper('modulename')->__('Module Data')));


    $fieldset->addField('test', 'text', array(
            'label'     => Mage::helper('modulename')->__('Test'),
            'name'      => 'test',
    ));

    // I want to add a custom button here. Say an action called "Add Option".
    //Clicking this action adds input boxes or dropdowns to the form that are to
    //to be included in the post when submitting the form (obviously).

スタック オーバーフローの解決策を探していましたが、役立つものを見つけることができませんでした。次に、Mage Core に存在する同様のものを検索してみました。

管理パネルで、[Catalog->Attributes->Manage Attributes] に移動し、たとえば「Manufacturer」などの標準属性をクリックすると、「ラベル/オプションの管理」という 2 番目のタブで、次の画面が表示されます。

オプションを追加

フォームにオプションを (テキストボックスの形で) 追加できるボタンとアクションがあります。これを私が再現しようとしているものだと認識して、私は核心部に入り、何をすべきかを考えてみました。次のファイルを開くと(Magento Enteprise 12.0.2):

Mage_Adminhtml_Block_Catalog_Product_Attribute_Edit_Tab_Options

空だと思いますが、Mage_Eav_Block_Adminhtml_Attribute_Edit_Options_Abstract を拡張します

私はこのファイルを調べましたが、ほとんど意味がありません。私は間違った方法で降りていますか?管理フォームにフィールドを追加するボタンとアクションなど、同様のものを実現するにはどうすればよいですか?

ありがとう

4

2 に答える 2

7
  1. フォームのカスタム テンプレートを設定し、HTML 経由で任意のタグ (ボタンなど) をそこに追加できます。
  2. フィールドのレンダラーを追加できます
$customField = $fieldset->addField('test', 'text', array(
            'label'     => Mage::helper('modulename')->__('Test'),
            'name'      => 'test',
    ));

$customField->setRenderer($this->getLayout()->createBlock('yuormodule/adminhtml_yourform_edit_renderer_button'));

ブロッククラスで

class Yournamespace_Yourmodule_Block_Adminhtml_Yourform_Edit_Renderer_Button extends Mage_Adminhtml_Block_Abstract implements Varien_Data_Form_Element_Renderer_Interface {
  public function render(Varien_Data_Form_Element_Abstract $element) {
    //You can write html for your button here
    $html = '<button></button>';
   return $html;
  }
}
于 2012-10-16T14:28:34.983 に答える