Admin de usuário do Sonata - Dependência de campo personalizado
Eu estendi a classe SonataAdmin para o FOSUser e adicionei 2 campos personalizados (tipo de opção da fonte de dados externa):Company
eSector
Eu gostaria de fazerSector
dependente deCompany
, portanto, se o usuário selecionar uma empresa, ele filtrará os setores disponíveis.
Eu pensei em usar FormEvents para filtrar no carregamento da página, mas eu nem sei como obter oCompany
valor do formulário atual.
Aqui está uma parte do meu costumeSectorType
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;
}
Então a questão é:
Como obter o selecionadoCompany
do meu costumeSectorType
?
Depois disso, preciso atualizar o setor com o Ajax, mas isso será outra questão