5
확인란이 있는데 확인란이있는 항목을 찾아서 데이터베이스에만 보내고 싶습니다. 그래서 이것을 만들었습니다 :Symfony의 Form Event를 사용하여 양식에 전송 된 일부 데이터를 제거하십시오.
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'));
문제 여전히 확인하고 선택하지 않은 항목은 데이터베이스 :(에 있는지
왜, 어떻게 사전에 대단히이 감사를 해결하기 위해 어떤 아이디어를 :) : 컨트롤러에서
은 "D는 특히 http://symfony.com/doc/current/cookbook/form/form_collections.html#allowing-tags-to-be-removed
: 확인란 모음이 사실이기 때문에
ItemType 자체 내에서 이벤트를 바인딩 했습니까? http://symfony.com/doc/current/cookbook/form/dynamic_form_modification.html#adding-an-event-subscriber-to-a-form-class – stefancarlton
예, 있습니다 :(데이터 배열이 정확합니다. 하지만 컨트롤러에 체크인 할 때'$ item'은 여전히 모든 데이터를 가지고 있습니다 .. – Faery
아, 레코드를 편집하고 있습니까? 데이터를 제거하여 설정을 해제하면 덮어 쓰지 않습니다. 예 : unset을 바꾸어보십시오 , $ data [ 'items'] [$ i] = 0; – stefancarlton