这是一个管理表单,我在其中添加了一个自定义选项卡,以便添加一些自定义字段到它。该表单工作正常。但我需要为我的一些字段添加field dependency
。
如果字段zipbasedprice_isrange
被设置为yes
,那么我需要显示另外两个字段&如果它被设置为no
,那么只应该显示一个字段。
我如何使用下面的表单实现这一点?
字段依赖关系应介于zipbasedprice_isrange
、zipbasedprice_zip
、zipbasedprice_zip_from_zip
和zipbasedprice_zip_to_zip
之间。
public function getFormHtml() {
$form = new Varien_Data_Form(
array('id' => 'edit_form', 'action' => $this->getData('action'), 'method' => 'post')
);
$this->getLayout()->createBlock('adminhtml/widget_form_renderer_element').
$this->getLayout()->createBlock('adminhtml/widget_form_renderer_fieldset').
$this->getLayout()->createBlock('adminhtml/widget_form_renderer_fieldset_element');
$fieldset = $form->addFieldset('zipbasedprice_fields', array('legend' => Mage::helper('zipbasedprice')->__('Zip Based Price'))
);
$default_country = array('label' => 'IN', 'code' => 'India');
$fieldset->addField('zipbasedprice_country', 'select', array(
'name' => 'zipbasedprice_country',
'label' => Mage::helper('zipbasedprice')->__('Country'),
'values' => Mage::getModel('adminhtml/system_config_source_country')->toOptionArray(),
'required' => true,
'style' => 'width:275px',
'value' => $default_country,
'after_element_html' => '<p class="zipbased_comment" style="margin: 0 150px; padding: 3px;"><img style="margin-right: 4px;" src="http://zonepricing.innoexts.com/skin/adminhtml/default/default/images/note_bg.gif" /><small>select the country to apply price</small></p>',
));
$regions = array();
$regions['*'] = '*';
$regionList = Mage::getModel('directory/region')->getResourceCollection()->addCountryFilter('IN')->load();
foreach($regionList as $region){ $regions[$region['code']] = $region['default_name']; }
$fieldset->addField('zipbasedprice_state', 'select', array(
'name' => 'zipbasedprice_state',
'label' => Mage::helper('zipbasedprice')->__('Region/State'),
'values' => $regions,
'required' => true,
'style' => 'width:275px',
));
$isRange = $fieldset->addField('zipbasedprice_isrange', 'select', array(
'name' => 'zipbasedprice_isrange',
'label' => Mage::helper('zipbasedprice')->__('Is Range?'),
'values' => array(
array(
'value' => false,
'label' => Mage::helper('zipbasedprice')->__('No'),
),
array(
'value' => true,
'label' => Mage::helper('zipbasedprice')->__('Yes'),
)
),
'value' => false,
'onchange' => 'onIsZipRangeChange()',
'required' => false,
'style' => 'width:275px',
));
$fieldset->addField('zipbasedprice_zip', 'text', array(
'name' => 'zipbasedprice_zip',
'label' => Mage::helper('zipbasedprice')->__('Zip Code'),
'class' => 'input',
'required' => true,
'style' => 'width:268px',
'value' => '*',
'maxlength' => 6,
));
$fieldset->addField('zipbasedprice_zip_from_zip', 'text', array(
'name' => 'zipbasedprice_zip_from_zip',
'label' => Mage::helper('zipbasedprice')->__('Zip Code From'),
'class' => 'input',
'required' => true,
'style' => 'width:268px',
'value' => '*',
'maxlength' => 6,
));
$fieldset->addField('zipbasedprice_zip_to_zip', 'text', array(
'name' => 'zipbasedprice_zip_to_zip',
'label' => Mage::helper('zipbasedprice')->__('Zip Code To'),
'class' => 'input',
'required' => true,
'style' => 'width:268px',
'value' => '*',
'maxlength' => 6,
));
$fieldset->addField('zipbasedprice_price', 'text', array(
'name' => 'zipbasedprice_price',
'label' => Mage::helper('zipbasedprice')->__('Price'),
'class' => 'input',
'required' => true,
'style' => 'width:268px',
'value' => '0.00',
));
$fieldset->addField('zipbasedprice_apply', 'select', array(
'label' => Mage::helper('zipbasedprice')->__('Apply'),
'name' => 'zipbasedprice_apply',
'required' => false,
'values' => array(
array(
'value' => 'fixed',
'label' => Mage::helper('zipbasedprice')->__('Fixed'),
),
array(
'value' => 'percentage',
'label' => Mage::helper('zipbasedprice')->__('Percentage'),
)
),
'required' => 1,
'value' => 1,
'style' => 'width:275px',
));
return $form->toHtml();
}
3条答案
按热度按时间j2qf4p5b1#
请考虑以下示例,该示例仅在选择了
Specified
选项时显示文本字段。depends
-该节点包含当前字段对其他字段的依赖列表,该节点的结构非常简单,子节点名称是该字段依赖的字段名称,节点值是使该字段可见的值,例如这样的配置:以上将添加规则,仅当名为
field_name
的字段的值等于1时,才显示当前字段。hfsqlsce2#
我想从@Slimshadddyyy扩展答案,再举一个有多个依赖值的例子。
在本例中,当您选择“每周”时,它将显示带有每周选项的字段,因此如果您选择“每月”选项。
ukdjmx9f3#
有不同的方法可以做到这一点。最容易和最简单的方法是将一个
onclick
属性添加到另一个字段所依赖的字段中。即然后定义
someFunction()
以实现所需功能。this thread中显示了另一种替代解决方案