Администратор пользователя Sonata - Зависимость пользовательских полей
Я расширил класс SonataAdmin для FOSUser и добавил 2 настраиваемых поля (тип выбора из внешнего источника данных):Company
и я'Sector
хотел бы сделатьSector
зависит отCompany
Таким образом, если пользователь выбирает Компанию, он фильтрует доступные Секторы.
Я хотя и об использовании FormEvents для фильтрации при загрузке страницы, но я недаже не знаю, как получитьCompany
значение текущей формы.
Вот часть моего обычая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, но это будет другой вопрос