FOSUser の SonataAdmin クラスを拡張し、2 つのカスタム フィールド (外部データ ソースからの選択タイプ) を追加しましたCompany
。Sector
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 で更新できるようにする必要がありますが、それは別の問題です。