有一個更好的辦法,但你需要重寫核心文件
覆蓋以下文件 應用程序\代碼\核心下的方法\法師\ Adminhtml \塊\小工具\表\元素\ 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 \ CONFIG \ form.php的 修改方法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
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
<depends>
<field1>
<val1>text</val1>
<val2>radio</val2>
</field1>
</depends>
+1所申報的確切符號分開骯髒的「評論代碼」詭計。 – epeleg 2011-01-31 20:05:19
然而,看起來我沒有妥善處理我Q上的逃跑,並且兩個地方都看不到。所以我現在修復了問題,並且我希望有人能夠利用標籤提供幫助。請注意,「註釋中的代碼」技巧使翻譯註釋變得困難(如果您將此代碼置於實際上沒有真正意見的字段的註釋中,這可能不是問題)。 –
epeleg
2011-01-31 20:09:41