2015-06-02 2 views
0

Мне нужно разместить две разные формы на одной странице и отправить отправить эти формы сразу. Вот мои действия:Две формы, одна подать - Symfony2

public function crearUsuarioAction() 
{ 
    $newuser = new User(); 
    $formuser = $this->createForm(new UserType(), $newuser); 
    $newdatos = new Datos(); 
    $formdatos = $this->createForm(new DatosType(), $newdatos); 
    return $this->render('AtajoBundle:IngresarValores:crearusuario.html.twig', array('formuser' => $formuser->createView(), 'formdatos' => $formdatos->createView())); 

} 

В шаблоне веточке я должен показать эти две формы, с одной кнопки отправки, и отправить все вместе, чтобы сохранить после их соответствующих таблиц. Form_start подумал, что если бы вы могли передать массив с двумя официальными формами, но не сделали этого. вот что мы стараемся:

{% block content %} 
{{ form_start(array(formuser, formdatos)) }} 
{{ form_errors(array(formuser, formdatos)) }} 
<div class="contactotexto">{{ form_label(formuser.usuario) }}</div> 
<div class="contactocampo">{{ form_widget(formuser.usuario) }}</div> 

<div class="contactotexto">{{ form_label(formuser.pass) }}</div> 
<div class="contactocampo">{{ form_widget(formuser.pass) }}</div> 

<div class="contactotexto">{{ form_label(formdatos.empresa) }}</div> 
<div class="contactocampo">{{ form_widget(formdatos.empresa) }}</div> 

<div class="contactotexto">{{ form_label(formdatos.cuit) }}</div> 
<div class="contactocampo">{{ form_widget(formdatos.cuit) }}</div> 

<div class="contactotexto">{{ form_label(formdatos.localidad) }}</div> 
<div class="contactocampo">{{ form_widget(formdatos.localidad) }}</div> 

<div class="contactotexto">{{ form_label(formdatos.calle) }}</div> 
<div class="contactocampo">{{ form_widget(formdatos.calle) }}</div> 

<div class="contactotexto">{{ form_label(formdatos.altura) }}</div> 
<div class="contactocampo">{{ form_widget(formdatos.altura) }}</div> 

<div class="contactotexto">{{ form_label(formdatos.areaTel) }}</div> 
<div class="contactocampo">{{ form_widget(formdatos.areaTel) }}</div> 

<div class="contactotexto">{{ form_label(formdatos.telefono) }}</div> 
<div class="contactocampo">{{ form_widget(formdatos.telefono) }}</div> 

<div class="contactotexto">{{ form_label(formdatos.areaCel) }}</div> 
<div class="contactocampo">{{ form_widget(formdatos.areaCel) }}</div> 

<div class="contactotexto">{{ form_label(formdatos.celular) }}</div> 
<div class="contactocampo">{{ form_widget(formdatos.celular) }}</div> 

<div ><input class="contactosubmit" type="submit" id="submit"/></div> 
{{ form_end(array(formuser, formdatos)) }} 

{% endblock %} 

Благодарим за помощь!

+0

Вам нужен Javascript или только одна форма: вы можете отправить только одну форму за один раз. – bishop

ответ

1

Почему бы не иметь одну форму с обоими типами форм в качестве свойств?

+0

Посмотрите, что он сделал. У меня есть два объекта: один с двумя полями: имя пользователя и пароль, другой объект имеет личные данные пользователя, и эти объекты связаны. Создайте две формы для каждой таблицы. Понимаете, в контролере я думаю, что две формы будут показаны в шаблоне. В шаблоне я показываю форму с одной кнопкой отправки. но когда пользователь отправляет форму и возвращается обратно в контроллер, как я делаю, чтобы сохранить данные соответственно? т.е. сохранить имя пользователя и пароль в таблице пользователя, вызывающей и других персональных данных в таблице данных вызова. спасибо – Geronimo

+0

Чтобы ответить на ответ Джона: связь между сущностью и формой не обязательно индивидуальна - вы можете создать встроенную форму, которая может «включать поля из множества разных объектов», как указано в документах. Это звучит как ваш случай использования; вы можете прочитать еще несколько встроенных форм здесь: http://symfony.com/doc/current/book/forms.html#embedded-forms –

+0

Возможно, мой ответ был низкого качества, но я думаю, что это было оправдано. То, что он пытался достичь, было неправильным подходом. Спасибо за продолжение @ Daragh. –

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