CraueFormFlowBundleを使用して複数ページのフォームを作成しました。このフォームを使用して、新しいエンティティ オブジェクトを作成したり、既存のエンティティ オブジェクトを編集したりできます。
次に、設定を追加しました
protected $allowDynamicStepNavigation = true;
フォームのページを前後に移動できるようにしますが、フォームを使用して既存のオブジェクトを編集する場合、フォーム内の任意のページに直接ジャンプできるようにしたいと考えています。これは機能していないようです。オブジェクト データが読み込まれ、目的のページに到達するまで [次へ] を繰り返し押すことができます。
CraueFormFlowBundle を使用して編集するときにページ ナビゲーションをレンダリングする方法はありますか?
私のテンプレートには以下が含まれます:
{% include 'CraueFormFlowBundle:FormFlow:stepList.html.twig' %}
ナビゲーションを作成します。編集アクションは次のとおりです。
public function editDriverAction($id) {
$em = $this->getDoctrine()->getManager();
$formData = $em->getRepository('NewgtDriverBundle:NewgtDriver')->find($id);
if (!$formData) {
throw $this->createNotFoundException('Unable to find Driver.');
}
//$formData = new NewgtDriver(); // Your form data class. Has to be an object, won't work properly with an array.
$flow = $this->get('newgtDriver.form.flow.createDriver'); // must match the flow's service id
$flow->bind($formData);
// form of the current step
$form = $flow->createForm();
if ($flow->isValid($form)) {
$flow->saveCurrentStepData($form);
if ($flow->nextStep()) {
// form for the next step
$form = $flow->createForm();
} else {
// flow finished
$em = $this->getDoctrine()->getManager();
$em->persist($formData);
$em->flush();
$flow->reset(); // remove step data from the session
return $this->redirect($this->generateUrl('driver')); // redirect when done
}
}
return $this->render('NewgtDriverBundle:Driver:new.html.twig', array(
'form' => $form->createView(),
'flow' => $flow,
));
}