Zend Framework 2 を使用しており、依存ドロップダウンが必要です。ユーザーがカテゴリ (私の例では 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(
'' => '',
),
),
));
Service Manager が利用可能なコントローラーでそれを行うことを選択したため、そこには 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は私と似たようなことを尋ねていると思いますが、私の問題をもっと詳しく説明したかったのです。