Magento配置 - 可能在自定义模块配置中使用模态对话框?

时间:2011-04-18 10:56:14

标签: configuration magento

在我的自定义模块的配置中,我想要一个具有几个输入字段和一个Button(button1)的组。好到目前为止。单击该按钮应从用户收集一些信息,并在单击另一个按钮(button2)时,将该信息提交给Web服务。收集的信息应该是暂时的,即我不希望它存储在配置表中。

我遇到的问题是我应该使用什么机制来收集提交给Web服务的信息。我可以让另一个组在点击button1时启用。但是,如果用户没有单击button2,我该如何禁用该组。

所以我想也许我可以点击button1,显示一个模态对话框。该模式对话框将包含用于收集我的Web服务所需信息的字段,以及用于提交数据的按钮。这可能吗?

更新 - 我试图通过以编程方式设置组中的“隐藏”和“扩展”来获取某些内容,但我将扩展设置为true的指令似乎被忽略了。

Update2 - 在对Jonathan的评论的回应中,这是我尝试过的代码。我尽可能地保持最小化。它几乎完成了这项工作。初始状态不正确,因为我希望group3'禁用'当第一次登陆页面时(它不是),并且切换不正确,因为你可以扩展group3(因为它最初没有被禁用),然后切换将折叠组而不是扩大它。此外,小的折叠/展开三角形并不总是指向反映群组状态的方向。

的system.xml:

...
<sections>
    <mymodule translate="label" module="mymodule">
        <groups>
            <group1 translate="label">
                <fields>
                    <my_button1 translate="button_label my_button1_label">
                        <label></label>
                        <button_label>Button One</button_label>
                        <frontend_model>mymodule/adminhtml_system_config_doButtonOne</frontend_model>
                    </my_button1>
                    ...
                </fields>
            </group1>
            <group2 translate="label">
                ...
            </group2>
            <group3 translate="label">
                <fields>
                    <!-- fields that gather first name, last name, etc. I do not want these fields
                         saved in the config; I'm hoping/guessing I can achieve that with a custom
                         backend model
                      -->
                    <my_button2 translate="button_label request_service_button_label">
                        <label></label>
                        <button_label_submit>Make Web Service Request</button_label_submit>
                        <button_label_cancel>Cancel</button_label_cancel>
                        <frontend_model>my_module/adminhtml_system_config_doButton2</frontend_model>
                    </my_button2>
            </group3>
        </groups>
    </mymodule>
</sections>
...

DoButton1.php:

protected function _prepareLayout()
{
    parent::_prepareLayout();
    if (!$this->getTemplate()) {
        $this->setTemplate('mypackage/system/config/button_one.phtml');
    }
    return $this;
}
public function render(Varien_Data_Form_Element_Abstract $element)
{
    $element->unsScope()->unsCanUseWebsiteValue()->unsCanUseDefaultValue();
    return parent::render($element);
}

protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
{
    $originalData = $element->getOriginalData();
    $this->addData(array(
        'button_label' => Mage::helper('mymodule')->__($originalData['button_label']),
        'html_id' => $element->getHtmlId(),
    ));
    return $this->_toHtml();
}

button_one.phtml:

<script type="text/javascript">

function showGroup3Only()
{
    // Setting expanded to true/false makes no difference to the behavior
    //$('mymodule_group1').expanded=false;

    $('mymodule_group1').hidden=true;
    $('mymodule_group2').hidden=true;
    $('mymodule_group3').hidden=false;

    Fieldset.toggleCollapse('mymodule_group3');
}

</script>

<table>
    <tr>
        <td>
            <button style="" onclick="showGroup3Only(); return false;" class="scalable" type="button" id="<?php echo $this->getHtmlId() ?>">
                <span><?php echo $this->escapeHtml($this->getButtonLabel()); ?></span>
            </button>
        </td>
    </tr>
</table>

DoButton2.php:

protected function _prepareLayout() {
    parent::_prepareLayout();
    if (!$this->getTemplate()) {
        $this->setTemplate('mypackage/system/config/button_two.phtml');
    }
    return $this;
}

public function render(Varien_Data_Form_Element_Abstract $element)
{
    $element->unsScope()->unsCanUseWebsiteValue()->unsCanUseDefaultValue();
    return parent::render($element);
}

protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
{
    $originalData = $element->getOriginalData();
    $this->addData(array(
        'button_label_submit' => Mage::helper('mymodule')->__($originalData['button_label_submit']),
        'button_label_cancel' => Mage::helper('mymodule')->__($originalData['button_label_cancel']),
        'html_id' => $element->getHtmlId(),
        'cancel_html_id' => 'cancel_' . $element->getHtmlId(),
    ));
    return $this->_toHtml();
}

button_two.phtml:

function restoreGroups()
{
    $('mymodule_group1').hidden=false;
    $('mymodule_group2').hidden=false;
    $('mymodule_group3').hidden=true;
}

</script>

<table>
    <tr>
        <td>
            <button style="" onclick="doStuffNotShown(); restoreGroups(); return false;" class="scalable" type="button" id="<?php echo $this->getHtmlId() ?>">
                <span><?php echo $this->escapeHtml($this->getButtonLabelSubmit()); ?></span>
            </button>
        </td>
        <td>
            <button style="" onclick="restoreGroups(); return false;" class="scalable" type="button" id="<?php echo $this->getCancelHtmlId() ?>">
                <span><?php echo $this->escapeHtml($this->getButtonLabelCancel()); ?></span>
            </button>
        </td>
    </tr>
</table>

非常感谢。

0 个答案:

没有答案