2012-01-23 5 views
1

테스트 목적으로 Symfony2로 라이트 라이브러리 온라인 도구를 만듭니다.Symfony2 체크 박스 폼, 체크 박스를 기반으로 날짜 변경

나는 다른 엔티티에 링크하는 Borrow 엔티티가 있습니다. 주어진 사용자가 빌린 책의 반환을 확인하기위한 양식을 만들고 싶습니다.

나는 사용자가 반환하지 않은 책에 해당하는 모든 녹음 메시지를 수집했습니다 (Borrow).

이제 사용자가 반환 한 책의 유효성을 검사하는 확인란 목록이있는 양식을 만들고 싶습니다. 그 다음에는 다음과 같은 것을 만들 수 있습니다 (문제는 아닙니다).

if ($this->getRequest()->getMethod() == 'POST') 
{ 
    $form->bindRequest($this->getRequest()); 

    if ($form->isValid()) 
    { 
     $obj_list = $form->getData(); 
     foreach ($obj_list as $obj) 
     { 
       $obj->setBorrowEndDate(...); // Today's datetime 

       $em = $this->getDoctrine()->getEntityManager(); 
       $em->persist($obj); 
       $em->flush(); 
     } 
     return $this->redirect($this->generateUrl('index')); 
    } 
    else 
    { 
     $args['problem']=$form->errors(); 
    } 
} 
// Continuation : creation of the form 
+0

내가 당신을 도울 수 있지만 정말 질문을 이해하지 않습니다 바랍니다. –

+0

폼을 만들어 데이터베이스의 개체에 연결하여 데이터 필드를 수정할 수 있습니다. 하지만 개체를 ​​업데이트하는 확인란을 만들고 싶습니다. 이 확인란이 켜져 있고 양식이 전송되면 개체의 date_return을 오늘로 업데이트하려고합니다. 이게 도움이 되니? – Creasixtine

답변

0

정말 문제를 이해하지 않습니다하지만 난 당신을 도와하려고합니다 :

당신의 엔티티의 클래스 속성을 생성(), 예를 들어, "확인"이라고 바로우

1)하는 데이터베이스에 따라되지 않습니다

private $check; 

public function setCheck($check) 
{ 
    $this->check = $check; 
} 

public function getCheck() 
{ 
    return $this->check; 
} 

2)는 체크 박스의 입력으로 수업 형태를 추가합니다.

$builder->add('check', 'checkbox') 

3) 그런 다음, 당신이있어이 개 솔루션 :

업데이트 같은 세터 :

public function setCheck($check) 
{ 
    $this->check = $check; 

    // Update borrow endtime 
    if ($this->check === true && !$this->getBorrowEndDate()) { 
     $this->setBorrowEndDate(new \DateTime()); 
    } 
} 

또는 사용 원칙에 lifecycles :

/** 
    * Called before persisting your entity 
    * 
    * @ORM\prePersist 
    */ 
public function prePersist() 
{ 
    // Update borrow endtime 
    if ($this->check === true && !$this->getBorrowEndDate()) { 
     $this->setBorrowEndDate(new \DateTime()); 
    } 
} 

희망 이것은 당신을 돕는다!

0

대신 개체 특성을 만들어, 당신은이 방법으로 작업을 수행 할 수 있습니다

$builder->add('check', 'checkbox', [ 
     'mapped' => false 
    ]); 


    $builder->addEventListener(FormEvents::POST_SUBMIT, function (FormEvent $event) 
    { 
     $form = $event->getForm(); 
     $object = $event->getData(); 

     if($form->get('check')->getData() && !$object->getBorrowEndDate()) { 
      $object->setBorrowEndDate(new \DateTime()); 
     } 

     $event->setData($object); 
    }); 
관련 문제