私は理解していない狂った問題があります。懸念しているSymfony2フォームからエンティティを格納すると動作しません
私のコードは以下のようになります。私は、エンティティと2つの形式が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)したい場合はからこのエンティティだけエンティティ1は以前にフォームで視覚化された(すべて可視化された)すべての値を失います。つまり、このentity1によって表示されるフィールドは、データベースに値NULLで永続的に格納されます。
エンティティ1に1つのメモリ機能しかプログラムされていないのに、エンティティ1が間違った値を永続的に格納する方法を教えてください。
私は、Submitを押すたびにentity1のフィールドがNULLに設定されているので、フォームのコンステレーションと関係があると言います。
誰かがこの問題を知りたいと思っています:)私は本当に解決策を見つけることができません。 *エンティティからのforeigキーがentity1のプライマリキーであるため、oneToOneと一致するため、エンティティとエンティティ1は接続されたばかりです...
私は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
ええと。私が2つの異なるエンティティでそれを行うことを計画している理由は、最初のエンティティを変更してはならないからです。しかし、適切な情報を定義する必要がある場合は、 istは2つの異なるformtypeで動作しますか?今私はすべてのエンティティに独自のフォームタイプを持っています – helmi
私はすでにマッピング情報を持っていると思いますので、最初のエンティティまたは他のエンティティで何も変更しないでください。必須エンティティの形式を変更し、フィールドのEntityTwoFormTypeを変更するだけで、追加のコードなしでレンダリングおよび永続化されます。 自分のエンティティを表示することができますので、自分の自己をよりよく説明できますか? –
フィードバックのお寄せいただきありがとうございます。どのファイルにエンティティクラス、またはエンティティフォームが必要ですか?または両方? – helmi