一个magento adminhtml字段可以取决于一个以上的字段或值吗?

编程入门 行业动态 更新时间:2024-10-26 14:27:22
本文介绍了一个magento adminhtml字段可以取决于一个以上的字段或值吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

在 alanstorm/magento_system_configuration_in_depth_tutorial @AlanStorm给出了一个很好的教程的系统配置.

In alanstorm/magento_system_configuration_in_depth_tutorial @AlanStorm gives a very good tutorial for system configuration.

他还解释了如何使用< depends>标记仅在另一个字段中设置了特定值时才显示该字段.

He also explains how to use a <depends> tag to make a field show only when a specific value is set in another field.

我的Q是我怎样才能使如果字段A有任一值V1或V2 fieldB可见. 以及是否有与在<任何其他选项;取决于>

My Q is how can I make fieldB visible if field A has either value V1 or V2. and are there any other options with the <depends> ?

此外,如果有人知道在Magento的代码,这是实现我也想看看在自己的代码

Also If someone knows where in magento's code this is implemented I would also like to have a look at the code myself.

谢谢

推荐答案

有一个更好的办法,但你需要重写核心文件

There is a better way, but you will need to override the core files

覆盖以下文件下的方法 应用\代码\核心\法师\ Adminhtml \块\的widget \表格\元素\ Dependence.php

Override the method under the following file app\code\core\Mage\Adminhtml\Block\Widget\Form\Element\Dependence.php

public function addFieldDependence($fieldName, $fieldNameFrom, $refValues) { /* if (is_array($refValues)) { Mage::throwException('Dependency from multiple values is not implemented yet. Please fix to your widget.xml'); } */ $this->_depends[$fieldName][$fieldNameFrom] = $refValues; return $this; }

在该应用\代码\核心\法师\ Adminhtml \块\ SYSTEM \配置\ form.php的 修改方法initFields

On the app\code\core\Mage\Adminhtml\Block\System\Config\Form.php Modify the method initFields

if ($e->depends) { foreach ($e->depends->children() as $dependent) { $dependentId = $section->getName() . '_' . $group->getName() . '_' . $fieldPrefix . $dependent->getName(); if ($dependent->count()) { $dependentValue = (array) $dependent; $dependentValue = array_values($dependentValue); } else { $dependentValue = (string) $dependent; } $this->_getDependence() ->addFieldMap($id, $id) ->addFieldMap($dependentId, $dependentId) ->addFieldDependence($id, $dependentId, $dependentValue); } }

修改JavaScript文件的js \法师\ adminhtml \ form.js

Modify the javascript file js\mage\adminhtml\form.js

trackChange : function(e, idTo, valuesFrom) { // define whether the target should show up var shouldShowUp = true; for (var idFrom in valuesFrom) { if (valuesFrom.hasOwnProperty(idFrom)) { if (typeof(valuesFrom[idFrom])=="object") { shouldShowUp = false; for(var idVal in valuesFrom[idFrom]) { if (valuesFrom[idFrom].hasOwnProperty(idVal)) { if (typeof(idVal)!="undefined" && ($(idFrom).value == valuesFrom[idFrom][idVal])) { shouldShowUp = true; } } } } else if (typeof(valuesFrom[idFrom])=="string") { if ($(idFrom).value != valuesFrom[idFrom]) { shouldShowUp = false; } } } /* if ($(idFrom).value != valuesFrom[idFrom]) { shouldShowUp = false; } */ } // toggle target row if (shouldShowUp) { $(idTo).up(this._config.levels_up).select('input', 'select', 'td').each(function (item) { if (!item.type || item.type != 'hidden') { // don't touch hidden inputs, bc they may have custom logic item.disabled = false; } }); $(idTo).up(this._config.levels_up).show(); } else { $(idTo).up(this._config.levels_up).select('input', 'select', 'td').each(function (item){ if (!item.type || item.type != 'hidden') { // don't touch hidden inputs, bc they may have custom logic item.disabled = true; } }); $(idTo).up(this._config.levels_up).hide(); } }

使用以下语法多个值依赖于你的XML

Use the following syntax for multiple values dependency on your xml

<depends> <field1> <val1>text</val1> <val2>radio</val2> </field1> </depends>

更多推荐

一个magento adminhtml字段可以取决于一个以上的字段或值吗?

本文发布于:2023-11-22 08:32:03,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1616700.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:字段   magento   adminhtml

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!