I have a form in admin with dropdown and textbox.
I want to show textbox only if dropdown value is set to yes.
I have not used UI-component for this.
I have tried below code but its not working.
<?php
namespace Company\Module\Block\Adminhtml\Syncpolicy\Edit\Tab;
class Listrules extends \Magento\Backend\Block\Widget\Form\Generic implements \Magento\Backend\Block\Widget\Tab\TabInterface
{
/**
* @var \Magento\Store\Model\System\Store
*/
protected $_systemStore;
protected $_resources;
/**
* @param \Magento\Backend\Block\Template\Context $context
* @param \Magento\Framework\Registry $registry
* @param \Magento\Framework\Data\FormFactory $formFactory
* @param \Magento\Store\Model\System\Store $systemStore
* @param array $data
*/
public function __construct(
\Magento\Backend\Block\Template\Context $context,
\Magento\Framework\Registry $registry,
\Magento\Framework\Data\FormFactory $formFactory,
\Magento\Store\Model\System\Store $systemStore,
array $data = array()
) {
$this->_systemStore = $systemStore;
parent::__construct($context, $registry, $formFactory, $data);
}
/**
* Prepare form
*
* @return $this
*/
protected function _prepareForm()
{
/* @var $model \Magento\Cms\Model\Page */
$model = $this->_coreRegistry->registry('module_syncpolicy_format');
$isElementDisabled = false;
/** @var \Magento\Framework\Data\Form $form */
$form = $this->_formFactory->create();
$form->setHtmlIdPrefix('page_');
$htmlIdPrefix = $form->getHtmlIdPrefix();
$fieldset = $form->addFieldset('base_fieldset', array('legend' => __('Synchronization Policy')));
if ($model->getId()) {
$fieldset->addField('id', 'hidden', array('name' => 'id'));
}
$selectField = $fieldset->addField('select_field', 'select', array(
'label' => 'Show/Hide Selection',
'name' => 'select_field',
'values' => array(
array(
'value' => 1,
'label' => 'Yes',
),
array(
'value' => 0,
'label' => 'No',
),
),
'onChange' => 'showHideField()',
));
$fieldset->addField('field_to_hide', text, array(
'label' => $this->__('Test'),
));
$selectField->setAfterElementHtml('
<script>
function showHideField() {
$("field_to_hide").toggle()
}
</script>
');
$form->setValues($model->getData());
$this->setForm($form);
return parent::_prepareForm();
}
/**
* Prepare label for tab
*
* @return string
*/
public function getTabLabel()
{
return __('List Rules');
}
/**
* Prepare title for tab
*
* @return string
*/
public function getTabTitle()
{
return __('List Rules');
}
/**
* {@inheritdoc}
*/
public function canShowTab()
{
return true;
}
/**
* {@inheritdoc}
*/
public function isHidden()
{
return false;
}
/**
* Check permission for passed action
*
* @param string $resourceId
* @return bool
*/
protected function _isAllowedAction($resourceId)
{
return $this->_authorization->isAllowed($resourceId);
}
}
Best Answer
For field dependency in admin form, try below code