我正在使用 Zend Framework 2,我需要一个 Dependent Dropdown。当用户选择一个类别(在我的示例中为 cat_id)时,系统会使用正确的元素填充子类别(sca_id)。
我可以通过创建这样的应用程序来做到这一点:
我的表格如下所示:
$this->add(array(
'name' => 'cat_id',
'type' => 'Zend\Form\Element\Select',
'options' => array(
'label' => 'Categoria',
'value_options' => array(
'' => '',
),
),
));
$this->add(array(
'name' => 'sca_id',
'type' => 'Zend\Form\Element\Select',
'options' => array(
'label' => 'Sub Categoria',
'style' => 'display:none;', // Esse campo soh eh exibido qndo uma categoria for escolhida
'value_options' => array(
'' => '',
),
),
));
请注意,我没有在那里填写 value_options,因为我选择在我的控制器中执行此操作,其中服务管理器可用:
$form = new ProdutoForm('frm');
$form->setAttribute('action', $this->url()->fromRoute('catalogo-admin', array( ... )));
// Alimenta as comboboxes...
$form->get('cat_id')->setValueOptions($this->getCategoriaService()->listarCategoriasSelect());
在 cat_id 的更改事件中,我$.ajax
从 Action 中获取元素并填充 sca_id。
这很好用!
问题在于我的验证:
$this->add(array(
'name' => 'cat_id',
'require' => true,
'filters' => array(
array('name' => 'Int'),
),
));
$this->add(array(
'name' => 'sca_id',
'require' => true,
'filters' => array(
array('name' => 'Int'),
),
));
当我提交表单时,它一直说:The input was not found in the haystack
对于两个下拉菜单...
我做错了什么?
额外问题:有更好的方法来填充我的下拉列表吗?
Ps.:我猜这个问题Disable notInArray Validator Zend Framework 2问的问题与我类似,但我想详细说明我的问题。