簡體   English   中英

Magento編輯表單字段集-將選擇下拉列表的值獲取到標簽中

[英]Magento edit form fieldset - get value of select dropdown into a label

我正在為網格行編輯屏幕。 到目前為止,這是我的表格:

<?php

class Intellibi_Integration_Block_Adminhtml_Manageasendiapickinglists_Edit_Tab_Form extends Mage_Adminhtml_Block_Widget_Form
{
    protected function _prepareForm()
    {
        $form = new Varien_Data_Form();
        $this->setForm($form);

        $fieldset = $form->addFieldset('integration_form', array(
            'legend' => Mage::helper('integration')->__('Asendia Pick Information')
        ));

        $fieldset->addField('order_number', 'label', array(
            'label' => Mage::helper('integration')->__('Order Number'),
            'name' => 'order_number'
        ));

        // snipped

        $fieldset->addField('pick_status', 'select', array(
            'required' => false,
            'class' => 'required-entry',
            'label' => Mage::helper('integration')->__('Pick Status'),
            'name' => 'pick_status',
            'values' => Mage::getSingleton('ibi/asendiapickstatus')->getOptionArray(),
            'readonly' => 'readonly'
        ));

        // snipped

        return parent::_prepareForm();
    }
}

這將在管理后端中產生以下輸出:

在此處輸入圖片說明

我想做的是將pick_status列從select更改為label 當我這樣做時,與其顯示狀態值“ New”,不如顯示數組索引:

在此處輸入圖片說明

我的asendiapickstatus選項數組在模型中的定義如下:

class Intellibi_Integration_Model_Asendiapickstatus extends Varien_Object
{
    const PICK_STATUS_NEW       = 1;
    const PICK_STATUS_SENT      = 2;
    const PICK_STATUS_SHIPPED   = 3;

    static public function getOptionArray()
    {
        return array(
            self::PICK_STATUS_NEW       => Mage::helper('integration')->__('New'),
            self::PICK_STATUS_SENT      => Mage::helper('integration')->__('Sent'),
            self::PICK_STATUS_SHIPPED   => Mage::helper('integration')->__('Shipped')
        );
    }
}

所以我的問題是; 在編輯表單字段集構建器上,如何顯示下拉字段“ pick_status”的值,而不是其當前索引? 因此,輸出將顯示“ New”而不是“ 1”,如上所示。 我需要自定義渲染器嗎?

我已經這樣解決了( 使用自定義表單呈現的元素 ):

添加了自定義字段集類型

$fieldset->addType('pickstatus', 'Intellibi_Integration_Block_Adminhtml_Manageasendiapickinglists_Edit_Tab_Form_Renderer_Fieldset_Pickstatus');

這樣使用了字段集

$fieldset->addField('pick_status', 'pickstatus', array(
    'label' => Mage::helper('integration')->__('Pick Status'),
    'name' => 'pick_status',
));

像這樣編碼渲染

class Intellibi_Integration_Block_Adminhtml_Manageasendiapickinglists_Edit_Tab_Form_Renderer_Fieldset_Pickstatus extends Varien_Data_Form_Element_Abstract
{
    protected $_element;

    public function getElementHtml()
    {
        // Load Pick Status
        $pick_status = (int)$this->getValue();
        $pick_status_list = Mage::getSingleton('ibi/asendiapickstatus')->getOptionArray();

        // Finish
        return array_key_exists($pick_status, $pick_status_list) ? $pick_status_list[$pick_status] : 'Unknown';
    }
}

它像這樣渲染

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM