我有复选框,我想找出带有选中复选框的项目并仅将它们发送到数据库。所以我做了这个:
class NotNeededFieldsSubscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents()
{
return array(FormEvents::PRE_BIND => 'preBindData');
}
public function preBindData(FormEvent $event)
{
$data = $event->getData();
$count = count($data['items']);
for ($i=0; $i < $count; $i++){
if (!array_key_exists('enabled', $data['items'][$i])){
unset($data['items'][$i]);
}
}
$event->setData($data);
}
}
当我测试看到 $event->getData 正是我想要的。
在控制器中:
$form = $this->formFactory->create(new ItemType(), $item);
if ($request->isMethod('POST')) {
$form->bind($request);
if ($form->isValid()) {
$this->em->persist($item);
$this->em->flush();
}
}
return $this->redirect($this->router->generate('home'));
问题是数据库中仍然检查和未检查的项目:(
任何想法为什么以及如何解决这个问题?首先十分感谢!:)