3

FOSUser の SonataAdmin クラスを拡張し、2 つのカスタム フィールド (外部データ ソースからの選択タイプ) を追加しましたCompanySector

Sectorに依存させたいCompanyので、ユーザーが会社を選択すると、利用可能なセクターがフィルタリングされます。

Companyページ読み込み時のフィルタリングに FormEvents を使用することについて考えましたが、現在のフォームの値を取得する方法さえわかりません。

ここに私の習慣の一部がありますSectorType

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->addEventListener(FormEvents::PRE_SET_DATA
    , function(FormEvent $event) {
        $data = $event->getData();
        $form = $event->getForm();
        // Need to get the company value here if set
    });
}

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults(array(
        'choices' => $this->getSectors(),
    ));
}

public function getSectors()
{
    $sects = array();
    // Need to pass the selected company value to my getList
    // (which gets the list of sector as you can imagine)
    if (($tmp_sects = $this->ssrs->getList('Sector'))) {
        foreach ($tmp_sects as $sect) {
            $label = $sect['id'] ? $sect['label'] : '';
            $sects[$sect['id']] = $label;
        }
    }
    return $sects;
}

質問は次のとおりです。

Companyカスタムから選択したものを取得するにはSectorType?


その後、セクターを Ajax で更新できるようにする必要がありますが、それは別の問題です。

4

1 に答える 1