在我的自定义模块的配置中,我想要一个具有几个输入字段和一个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>
非常感谢。