2013-11-01 1 views
0

HEllo извините, но мой английский не хорош.проблемы с запросом в внедряемой форме

Я разрабатываю приложение в Symfony 2.3.6, где мне нужно сохранить в DB (postgres) значения от пользователя. Проблема возникает, когда моя встроенная форма (pais + region), которая имеет 2 кнопки отправки, нажимает вторую кнопку. Система бросок

Child "salvar_region" does not exist. 

Вопрос заключается в том, как я могу определить, если вторая кнопка нажата, если система выбрасывает исключение?

Вот мой контроллер по умолчанию

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»}

ответ

0

Ошибка, которую вы получили, не похожа на имя, которое вы дали кнопке во время процесса создания.

Во всяком случае, сказать, если конкретный представить нажал вы можете использовать:

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

} 
+0

ммм. Была ошибка ввода в вопросе ... Это было в моем коде. Вопрос в том, как я могу получить настоящее имя кнопки, потому что я пытался с region.salvarregion, localidad.region.salvarregion, но это не работает. –

Смежные вопросы