0

我有这个表格:

    $form = new Varien_Data_Form();

    $costsForm = $form->addFieldset('costs', array(
        'legend'    => Mage::helper('starmall_config')->__('Shipping costs')
    ));

    $data = array();

    $costsArr = Mage::helper("starmall_config")->getShippingWeightRateList();

    for ($i=0; $i < count($costsArr); $i++) {
        $data["ship_cost_" . $i . "_from"] = $costsArr[$i]["from"]; 
        $data["ship_cost_" . $i . "_to"] = $costsArr[$i]["to"]; 

        // 1st column
        $costsForm->addField("ship_cost_" . $i . "_from", 'text', array(
            'name'      => "ship_cost_" . $i . "_from",
            'label'     => $costsArr[$i]["label"],
            'class'     => 'required-entry',
            'style'     => 'width:50px',
            'required'  => true,
        ));

        // 2nd column
        // how to add a new field on the same row in another column 

        // 3rd column
        // how to add a new field on the same row in another column

        // 4th column
        // how to add a new field on the same row in another column
    }

它看起来像这样: 在此处输入图像描述

我想在同一行添加多个输入字段。这可以在 Magento 1.7 中完成吗?

4

3 回答 3

1

1)如果您直接向表单添加字段(例如 $form->addField(....) )

\app\design\adminhtml\default\default\template\widget\form\renderer\element.phtml

第 29 行附近:

改变:

<span class="field-row">

进入:

<span class="field-row <?= $_element->getId();?>">

现在您可以使用类访问表单行,并且可以使用 CSS 来实现您所需要的。


2)如果您将字段添加到表单字段集(例如 $fieldset->addField(....) )

  • 提供参数“container_id”,例如:

        $fieldset->addField('test_field', 'text', array(
        'name'      => 'test_field',
        'label'     => $this->__('Test field'),
        'required'  => false,
        'disabled'  => false,
        'style'     => 'width:50px;',
        'container_id'  => 'some-row-id'
    ));
    

渲染后你会看到:

<tr id="some-row-id">

现在你可以轻松地使用 CSS 来获得你需要的东西。

亲切的问候,贾努斯

于 2014-07-31T06:04:25.367 回答
0

尝试使用 setNoSpan() 方法。例如:

$checkbox = $this->addField('is_enabled', 'checkbox', array(
            'onclick'   => 'this.value = this.checked ? 1 : 0;',
            'name'      => 'is_enabled',
))->setNoSpan(true);

或者

$checkbox = $this->addField('is_enabled', 'checkbox', array(
            'onclick'   => 'this.value = this.checked ? 1 : 0;',
            'name'      => 'is_enabled',
            'no_span' => true
        ));

您可以在以下文件中查看此元素的用法:

app/design/adminhtml/default/default/template/widget/form/renderer/element.phtml

<?php $_element = $this->getElement() ?>
<?php if($_element->getNoSpan() !== true): ?>
<span class="field-row">
<?php endif; ?>
<?php echo $_element->getLabelHtml() ?>
<?php echo $_element->getElementHtml() ?>
<?php if($_element->getNoSpan() !== true): ?>
</span>
<?php endif; ?>
于 2014-04-10T14:17:07.190 回答
0

您好,因为 Magento 实际上为每个路径存储一个值(请参阅 core_config_data 表),我能想到的实现此目的的唯一方法是将您的数据保存为 json 或序列化格式,然后覆盖渲染器以将信息拆分为单独的输入字段。更简单的方法是添加一些自动将 json 拆分为单独输入的 javascript,然后在提交时将其重新组合在一起,这样您就不必编辑模型和渲染器。

于 2013-09-24T11:31:37.520 回答