Magento表单 - 如何在同一行显示输入字段?

时间:2013-09-24 10:13:18

标签: magento magento-1.7

我有这样的表格:

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

看起来像这样: enter image description here

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

3 个答案:

答案 0 :(得分:1)

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

\应用\设计\ adminhtml \默认\默认\模板\插件\形式\渲染器\ element.phtml

第29行:

变化:

<span class="field-row">

成:

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

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


2)如果您向表单字段集添加字段(例如$ fieldset-&gt; addField(....))

  • 提供参数&#34; container_id&#34;,例如:

        $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来获得所需内容。

亲切的问候, 雅努什

答案 1 :(得分:0)

Hello,因为Magento实际上每个路径存储一个值(请参阅core_config_data表)我能想到的唯一方法是以json或序列化格式保存数据,然后覆盖渲染器以将信息拆分为单独的输入领域。即使是easyer也只是添加一些javascript,自动将json拆分为单独的输入,然后将其组合回提交,以便您不必编辑模型和渲染器。

答案 2 :(得分: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
        ));

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

应用程序/设计/ adminhtml /默认/默认/模板/插件/形式/渲染器/ 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; ?>