0

こんにちは申し訳ありませんが、私の英語は苦手です。

ユーザーからの値を DB (postgres) に保存する必要がある Symfony 2.3.6 でアプリケーションを開発しています。問題は、2 つの送信ボタンがある埋め込みフォーム (pais + region) で、ユーザーが 2 番目のボタンを押すと発生します。システムスロー

Child "salvar_region" does not exist.

問題は、システムが例外をスローしている場合、2 番目のボタンが押されているかどうかをどのように検出できるかということです。

これが私のデフォルトのコントローラーです

 public function addLocalAction(Request $request)
    {
        $region = new Region();
        $localidad = new Pais();
        $localidad->setRegion($region);
        $form = $this->createForm(new localidadType(), $localidad);  
         if($request->isMethod('POST')){
            $form->handleRequest($request);
            $form->getData();    




       if ($form->get('salvarPais')-> isClicked()){
        $objeto = new Pais();
        $objeto->setNombrePais($form->get('nombrePais')->getData());            
        $em = $this->getDoctrine()->getManager();
        $em->persist($objeto);
        $em->flush();}

       if ($form->get('salvarregion')->isClicked()){

        $objeto = new Region();
        $objeto->setNombreRegion($form->get('nombreRegion')->getData());
        $objeto->setNombreRegion($form->get('numeroRegion')->getData());
        $em = $this->getDoctrine()->getManager();
        $em->persist($objeto);
        $em->flush();}



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


  }
    return $this->render('plataformaPlataformaBundle:Default:localidades.html.twig', array('form'=> $form->createView()));
}

私の html.twig

<form action="{{ path('localidades')}}" method="post" {{ form_enctype(form) }}>
<h3>Agregar País</h3>
<div class="pais">
    {{ form_row(form.nombrePais) }}
    {{ form_row(form.salvarPais) }}
</div>   

<form action="{{ path('localidades')}}" method="post" {{ form_enctype(form) }}>
    <h3>Agregar Region</h3>

    <div class="region">
        {{ form_start(form) }}
            {{ form_errors(form)}}
            {{ form_row(form.region.nombreRegion) }}
            {{ form_row(form.region.numeroRegion) }}
            {{ form_row(form.region.pais) }}
            {{ form_row(form.region.salvarregion) }}
        {{ form_end(form) }}

    </div>    

</form>

そして私の2つのタイプのフォーム

    public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->add('nombreRegion', 'text', array('label' => 'Nombre de Región: '));
    $builder->add('numeroRegion', 'integer', array('label' => 'Número de Región: '));
    $builder->add('pais', 'entity', array('label' => 'País al que pertenece: ',
        'class' => 'plataformaPlataformaBundle:Pais',
        'property' => 'nombrePais'));
    $builder->add('salvarregion', 'submit', array('label' => 'Guardar Región'));
    $builder->getForm();

}


  public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->add('nombrePais', 'text');
    $builder->add('salvarPais', 'submit', array('label' => 'Guardar País'));
    $builder->add('region', new regionType());
    $builder->getForm();

}

PD: 誰かが私を助けてくれたらどうもありがとう PDx2: URL リクエストの例を次に示します:{"region":{"nombreRegion":"ewrew","numeroRegion":"4","pais":"3 ","salvarregion":""},"_token":"853d5460b076e01fdf4cef4c59c33e836ab64af3"}

4

1 に答える 1

0

表示されたエラーは、ビルダー プロセス中にボタンに付けた名前とは異なります。

とにかく、特定の送信がクリックされたかどうかを確認するには、次を使用できます。

if($form->get('salvarregion')->isClicked()) {

}
于 2013-11-01T13:59:32.500 に答える