У меня есть FormType, который создает группы флажков на основе массива, который передается при создании этого FormType:
//FormType.php
public function __construct(array $choices, array $choicesData)
{
$this->choices = $choices;
$this->choicesData = $choicesData;
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
foreach ($this->choices as $bundle => $class) {
$choiceBuilder = $builder->create($bundle, 'form', array('virtual' => true));
foreach ($class as $name => $perm) {
$choiceBuilder->add(
$name, 'choice', array(
'choices' => $perm,
'multiple' => true,
'mapped' => false,
'expanded' => true,
'required' => 'false',
'label' => $name,
'data' => $this->choicesData[$bundle][$name]
)
);
}
$builder->add($choiceBuilder);
}
$builder->add('salvar', 'submit', array('label' => false));
}
Примечание. В Type нет setDefaultOptions.
Затем я создаю форму:
//Controller.php
$form = $this->createForm(new PermissaoType($choices, $choicesData), $choicesData);
Моя проблема: но когда я делаю handleRequest() данных, отправленных с помощью POST, getData() не возвращает изменение формы, только то, что установлено в $choicesData. Может ли кто-нибудь помочь мне в этом?
//Controller.php
if ($request->isMethod('POST')) {
$form->handleRequest($request); // Not Work
$data = $form->getData(); // Return $choicesData original
}
Пример оригинала $choiceData:
array(
'group1' => array(
'item1' => array('chk1' => false, 'chk2' => false, 'chk3' => false)
)
);
Пример отправленной формы:
array(
'group1' => array(
'item1' => array( 0 => 'chk1', 1 => 'chk3')
)
);
Пример возврата $choiceData (после $form->handleRequest() и $form->getData()):
array(
'group1' => array(
'item1' => array('chk1' => false, 'chk2' => false, 'chk3' => false)
)
);
Большое спасибо.