0

次のような状況があります。

symfony2 フォームをモーダルにレンダリングしました (ブートストラップと jQuery を使用)。フォームが無効な場合、モーダル ボックス内にエラー メッセージが表示されます。次のようにモーダル ボックスにリンクしました: route/to/action#modal

どうやってやるの?

私のテンプレートには、モーダルへの簡単なリンクがあります。

<a data-toggle="modal" href="#new">Add member</a>

このリンクはモーダルを開きます。内部には、タイトル、first_name、および last_name を含む単純なフォームがあります。

{{ form_widget(form.title) }}
{{ form_widget(form.first_name) }}
{{ form_widget(form.last_name) }}

フォーム クラスでは、次のように定義しました。

 $builder
        ->add('title', 'text', array('required' => false))
        ->add('first_name')
        ->add('last_name');

したがって、役職はオプションで、姓と名は必須です。そこで、これらの行を validation.yml に追加しました。

Acme\MemberBundle\Entity\Member:
properties:
    first_name:
        - NotBlank: { message: Please enter a first name }
    last_name:
        - NotBlank: { message: Please enter a last name }

そして、私のアクション(フォームが送信されたときに呼び出されます)には、次の行があります:

/**
 * Creates a new Member entity.
 *
 * @Route("/create", name="acme_member_create")
 * @Method("post")
 * @Template("AcmeMemberBundle:Member:index.html.twig")
 */
public function createAction()
{
    $member = new Member();
    $em = $this->getDoctrine()->getEntityManager();
    $request = $this->getRequest();
    $form = $this->createForm(new MemberType(), $member);
    $form->bindRequest($request);

    if ($form->isValid()) {
        $em->persist($member);
        $em->flush();

        return $this->redirect($this->generateUrl('acme_member'));

    }

    $entities = $em->getRepository('AcmeMemberBundle:Member')->findAll();

    return array(
        'entities' => $entities,
        'form'   => $form->createView()
    );
}

したがって、 for が有効でない場合は、 index.html.twig (モーダルが表示される場所) に戻りたいと考えています。

4

1 に答える 1

0

私は解決策を見つけました!

このJavaScriptコードを使用すると、ページが読み込まれたときにモーダルを表示できます。

$(window).load(function(){
    $('#new').modal()
}); 

したがって、フォームが有効でない場合は、このコードを実行するだけです。

于 2012-07-19T14:29:03.690 に答える