2017-11-07 1 views
0

나는 미친 문제가 있습니다. 이해가 안됩니다. 우려Symfony2 양식의 엔티티 저장이 작동하지 않습니다.

내 코드는 다음과 같습니다 내가 엔티티 두 가지 형태를 inludes과 렌더링 양식을 만들

public function appendAction(Request $request, $pKpPatientid) 
{ 
    if (!$this->isAdmin()) { 
     throw new AccessDeniedException(); 
    } 
    $entity = new DataDFu1(); 
    $entity1 = $this->getDoctrine() 
     ->getRepository('DataLiveBundle:DataAPatient') 
     ->find($pKpPatientid); 

    $appendForm = $this->createAppendForm($pKpPatientid,$entity, $entity1); 


    $appendForm->handleRequest($request); 
    // if ($appendForm->isValid()) { 
     if($appendForm->get('submit')->isClicked()){//Save 
      //return $this->redirect($this->generateUrl('dataapatient_sendMessage', array("pKpPatientid" => $pKpPatientid))); 
      $entity->setFu1KfPatientid($entity1); 
      $this->storeAppendDataDFu1($entity); 

    // } 
    } 

    return $this->render('DataLiveBundle:DataDFu1:form.html.twig', array(
     // 'entity'  => $entity, 
     'form' => $appendForm->createView(), 
     'isNew'=> true, 
    )); 
} 

/** 
* The function createAppendForm 
* Creates a form with the Information from a DataAPatient. 
* @param DataAPatient $pKpPatientid The primary key 
* @return \Symfony\Component\Form\Form 
*/ 
private function createAppendForm($pKpPatientid, $entity, $entity1) 
{ 

    $form = $this->createForm($this->get('data_livebundle.form.dataapatienttype'), $entity1, array(
    //'action' => $this->generateUrl('dataHome'), 
    'method' => 'POST' 
    )); 

    $form->add('submit', 'submit', array('label' => 'Create Fu1')); 
    return $form->add('dFu1', new DataDFu1Type(), array('data'=>$entity)); 

} 

/** 
* The function storeEditedDataDFu1 
* Persists changes made to an existing DataDFu1 entity to the database 
* @param DataDFu1 entity 
* @return DataAPatient $pKpPatientid The primary key 
*/ 
public function storeAppendDataDFu1($entity) 
{ 
    $em = $this->getDoctrine()->getManager(); 
    $session = $this->getRequest()->getSession(); 

    if (!$entity) { 
     throw $this->createNotFoundException('Unable to find DataDFu1 entity.'); 
    } 

    $em->persist($entity); 
    $em->flush(); 
    $session->getFlashBag()->add(
      'notice', 
      'Your changes to the DataDFu1 of ID: "'."xyz". '" was saved!' 
    ); 
    // return $entity->getPKpPatientid(); 
} 

. 벌금이 부과됩니다. 그러나이 엔티티의 데이터를 store (storeAppendDataDFu1)에 저장하고이 엔티티에서 단지 을 원할 때 entity1은 이전에 시각화 된 모든 값을 잃게됩니다. 즉,이 entity1이 표시하는 필드는 데이터베이스에 NULL 값과 함께 영구 저장됩니다.

엔티티 1()에 대해 하나의 메모리 함수 만 프로그래밍 된 경우에도 엔티티 1이 잘못된 값을 지속적으로 저장할 수 있습니까?

제가 가정 할 때마다 Submit을 누를 때마다 entity1의 필드가 NULL로 설정되기 때문에 폼의 집합과 관련이 있다고 가정합니다.

누군가가이 문제를 알고 있기를 바랍니다. :) 정말 해결책을 찾을 수 없습니다. 엔티티와 엔티티 1은 연결되어 있습니다. 왜냐하면 엔티티의 foreig 키가 엔티티 1의 기본 키이기 때문에 oneToOne과 일치하기 때문입니다 ...

나는 mappingBy null도 찾았습니까? 그게 무슨 뜻이야? 이유가 될 수 있을까요? 피드백에 대한

oneToOne: 
    fu1KfPatientid: 
     targetEntity: DataAPatient 
     cascade: { } 
     fetch: LAZY 
     mappedBy: null 
     inversedBy: dFu1 
     joinColumns: 
      _FU1_kf_PatientID: 
       referencedColumnName: __P_kp_PatientID 
     orphanRemoval: false 

덕분에 ... 당신이 두 엔티티를 유지하는 적절한 매핑 정보를 추가하는 것이 더 information..Thaanks

답변

0

이제 문제가 발견되었습니다. 문제는 내가 레지스터 레이아웃을 만들

{#<div class="container"> 
<div class="row"> 
    <ul class="nav nav-tabs pull-left"> 
     <li class="active"><a href="#patientInfo" data-toggle="tab">Patient info</a></li> 
     <li ><a href="#partI" data-toggle="tab">Part I</a></li> 
     <li ><a href="#partII" data-toggle="tab">Part II</a></li> 
     <li ><a href="#partIII" data-toggle="tab">Part III</a></li> 
    </ul> 
    {#div class="clearfix">tmp. disable#}</div> #} 

Data-Toggle

를 사용하고 있다는 점이다. 이런 종류의 레이아웃은 Simfony2 Forms에서는 제대로 작동하지 않는다고 생각합니다. Symfony2 Forms에서 레지스터 레이아웃과 관련하여 어떤 경험이 있습니까?

0

엔터티가 관련된 경우입니다하지 더 필요하면 말해? 엔티티 1

/** 
*@ORM\OneToOne(targetEntity="Entity2", cascade={"persist"}) 
* 
*/ 
$entity_two_reference; 

의 형식이는 Entity2Type 될 것이다 당신이 플러시()가 잘 작동해야 할 때

평소 렌더링한다.

+0

흠. 내가 두 개의 다른 엔티티로 그것을 할 계획이 된 이유는 첫 번째 엔티티가 변경되어서는 안되기 때문입니다. 그러나 적절한 정보를 정의해야하는 방식을 따르고 싶을 때가 있습니다. ist는 두 가지 다른 형식으로 작동합니까? 왜냐하면 이제는 모든 엔티티에 대해 자신 만의 형식을 가지고 있기 때문입니다. – helmi

+0

이미 매핑 정보를 가지고 있기 때문에 첫 번째 엔티티 또는 다른 엔티티에서 아무것도 변경하면 안됩니다. 필수 엔터티 형식 만 변경하고 필드의 EntityTwoFormType을 수정하면 추가 코드없이 렌더링되고 유지됩니다. 엔티티를 보여 주시면 자기 자신을 더 잘 설명 할 수 있습니까? –

+0

의견을 보내 주셔서 감사합니다. 어떤 파일에 엔티티 클래스 또는 엔티티 양식이 필요합니까? 아니면 둘다? – helmi

관련 문제