CraueFormFlowBundleを使用してマルチステップ フォームを構築しようとしています。ひとまず最初のステップ(利用者情報)に行けるのですが、「次へ」ボタンをクリックするとエラーになります。
最初のステップは User エンティティに基づくフォーム データ型で、2 番目のステップはエンティティ Etablissement (別のエンティティ) に基づく別のフォーム データ型です。
私のエラーメッセージがあります:
フォームのビュー データはクラス AppBundle\Entity\Etablissement のインスタンスであると予想されますが、クラス AppBundle\Entity\User のインスタンスです。このエラーを回避するには、「data_class」オプションを null に設定するか、クラス AppBundle\Entity\User のインスタンスを AppBundle\Entity\Etablissement のインスタンスに変換するビュー トランスフォーマーを追加します。
ファイル構成手順:
namespace AppBundle\Form;
// AppBundle/Form/RegistrationEtablissementFlow.php
use Craue\FormFlowBundle\Form\FormFlow;
use Craue\FormFlowBundle\Form\FormFlowInterface;
use Symfony\Component\Form\FormTypeInterface;
class EnregistrementCompletFlow extends FormFlow {
/**
* @var FormTypeInterface
*/
protected $formType;
public function setFormType(FormTypeInterface $formType) {
$this->formType = $formType;
}
public function getName() {
return 'enregistrementComplet';
}
protected function loadStepsConfig() {
return array(
array(
'label' => 'Infos personnelles',
'form_type' => 'homes_user_registration', // the user's form registered as sevice
),
array(
'label' => 'Infos établissement',
'form_type' => 'likabee_form_etablissement', // the etablissement's form registered as sevice
//'form_type' => $this->formType,
),
array(
'label' => 'confirmation',
),
);
}
}
私のコントローラーで:
/**
* @Route("/registration-etablissement", name="registrationEtablissement")
*/
public function registrtationEtablissementAction()
{
$formData = new User();
$formData->setEtablissement( new Etablissement());
$flow = $this->get('likabee.form.flow.enregistrementComplet'); // 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('index')); // redirect when done
}
}
return $this->render('registrationEtablissement.html.twig', array(
'form' => $form->createView(),
'flow' => $flow,
));
}
2番目のステップに行くとき、フォームはEtablissementタイプではなくユーザータイプを待っていると思いますが、これを解決する方法がわかりません...
前もって感謝します ...