私は Symfony2 と Doctrine 2.1.6 で作業しており、マルチステップ フォームをセットアップしようとしています。各フォーム ページ間で、ドクトリン エンティティを $_SESSION に送信しようとします。
そのドットリンのドキュメントによると、複数ページのフォームを解決することが可能であり、その方法さえあります: http://docs.doctrine-project.org/en/2.1/cookbook/entities-in-session.html
しかし、stackoverflow に関する他の多くの投稿によると、エンティティをセッションに送信することはできません。
私は次のコントローラアクションを持っています。ここでは、教義のドキュメントをほとんどコピー/貼り付けています。
public function indexAction(Request $request, $id)
{
$session = $request->getSession();
$em = $this->getDoctrine()->getEntityManager();
if (isset($_SESSION['propertyAdd'])) {
$property = $_SESSION['propertyAdd'];
$property = $em->merge($property);
}
else {
$property = new property;
}
$form = $this->createForm(new propertyType($this->getDoctrine()),$property);
// check form
if ($request->getMethod() == 'POST') {
$form->bindRequest($request);
if ($form->isValid()){
$em->detach($property);
$_SESSION['propertyAdd'] = $property;
// redirection to next step here
}
}
return $this->render('AddProperty:'.$id.'.html.twig', array(
'form' => $form->createView(),));
}
行 $_SESSION['propertyAdd'] = $property; 次のエラーを教えてください:
Fatal error: Uncaught exception 'ErrorException' with message 'Notice: Unknown: "id" returned as member variable from __sleep() but does not exist in Unknown line 0' in G:..\Symfony\vendor\symfony\src\Symfony\Component\HttpKernel\Debug\ErrorHandler.php on line 65
Symfony2 ヘルパーを使用してこの行を置き換えると
$session->set('propertyAdd', $property);
次の例外がスローされます。
Symfony\Bundle\FrameworkBundle\DataCollector\RequestDataCollector::serialize() must return a string or NULL
教義の例は実行可能ですか。