5

チェックボックスがあり、チェックボックスがオンになっているアイテムを見つけて、それらのみをデータベースに送信したい。だから私はこれを作った:

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'));

問題は、まだチェックされているアイテムとチェックされていないアイテムがデータベースにあることです:(

これを修正する理由と方法はありますか? よろしくお願いします!:)

4

1 に答える 1