首先,我已经看到这个问题,magento adminhtml字段可以依赖于多个字段或值吗? 它讨论了系统/配置字段,这不是我想要的.
我正在尝试在magento后端创建一个表单.我有一个下拉列表下拉与值1,2和3.我需要显示的区域X当我选择1或2.我该怎么办呢?
我可以根据下拉列表的单个值显示X,而不是多个值.
这就是我做的:
$this->setChild('form_after',$this->getLayout()->createBlock('adminhtml/widget_form_element_dependence')
->addFieldMap($X->getHtmlId(), $Xl->getName())
->addFieldMap($dropdown->getHtmlId(), $dropdown->getName())
->addFieldDependence($X->getName(), $dropdown->getName(), 1)
);
Run Code Online (Sandbox Code Playgroud)
哪里$x和$dropdown哪些是存储addField()结果的变量
Won*_*and 11
您可以.
更多字段:
只需添加更多依赖项:
->addFieldDependence($X->getName(), $dropdown_1->getName(), $value_dw_1)
->addFieldDependence($X->getName(), $dropdown_2->getName(),$value_dw_2)
Run Code Online (Sandbox Code Playgroud)
更多值(相同字段):
您应传递一组值:
->addFieldDependence($X->getName(), $dropdown->getName(), array($value1,value2))
Run Code Online (Sandbox Code Playgroud)
如果$value1/$value2是数字,最好将它们转换为字符串,否则无法正常工作:
->addFieldDependence($X->getName(), $dropdown->getName(), array((string)$value1,(string)value2))
Run Code Online (Sandbox Code Playgroud)
有一个原因可以js/mage/adminhtml/form.js在方法trackChange中跟踪这个问题,你会看到这段代码:
...
// define whether the target should show up
var shouldShowUp = true;
for (var idFrom in valuesFrom) {
var from = $(idFrom);
if (valuesFrom[idFrom] instanceof Array) {
if (!from || valuesFrom[idFrom].indexOf(from.value) == -1) {
shouldShowUp = false;
}
} else {
if (!from || from.value != valuesFrom[idFrom]) {
shouldShowUp = false;
}
}
}
....
Run Code Online (Sandbox Code Playgroud)
你看,如果valuesFrom[idFrom]它用于indexOf检查是否显示字段,这会导致问题,因为它认为,indexOf做一个比较照顾类型,from.value它包含一个字符串,而在数组中valuesFrom[idFrom]我们有一个数字数组.. .
在单个值的情况下不会发生此问题,因为from.value != valuesFrom[idFrom]没有处理类型
小智 -1
解决这个问题的简单方法是在管理部分使用 jquery。
<reference name = "head">
<action method="addJs"><script>jquery/jquery.js</script></action>
<action method="addJs"><script>jquery/jquery.noconflict.js</script></action>
</reference>Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)$fieldset->addField('market_days', 'multiselect', array( 'label' => Mage::helper('marketmanagement')->__('Select Days'), 'class' => 'required-entry market-days', 'required' => true, 'name' => 'market_days', 'onclick' => ""//jquery code here ));
您可以编写 jquery 代码来根据所选值显示/隐藏字段。
希望这可以帮助
| 归档时间: |
|
| 查看次数: |
2407 次 |
| 最近记录: |