Intereting Posts
Преобразование совпадений в верхнем регистре, полужирное, с использованием регулярных выражений Добавление сеттеров и Getters в модель Laravel метод вызова класса (с конструкторами) без создания объекта в php Youtube Analytics API PHP Неверный запрос. Запрос не соответствовал ожиданиям Как создать PDF из HTML с помощью классов начальной загрузки CSS Кэш-файл кэширует сетевые файлы Как получить идентификатор электронной почты пользователей в приложении Facebook с использованием PHP? PHP preg_split удаляет запятые и завершающий пробел php zend gdata помещает документ / файл в категорию / папку Google Docs Symfony 3: обработчик успешного вызова по умолчанию из настраиваемого обработчика разделение вывода тегов Добавление пользовательского скидочного заказа Всего в Magento не меняет налог с продаж Как отобразить макет с переменным количеством элементов в массиве (PHP) SSH2 в php, wamp, windows Определение области вызова в PHP

Как объединить и обработать 2 формы symfony в одном?

У меня есть 2 формы symfony:

SignupFormType и HouseRentFormType

Форма регистрации выглядит так:

 <form ..> <input name='email' .. /> <input name='pass' .. /> .. </form> 

И арендная плата Дома выглядит так:

 <form ..> <input name='city' .. /> <input name='price' .. /> </form ..> 

Я хочу объединить их, чтобы они выглядели так:

 <form ..> // house rent info: <input name='city' .. /> <input name='price' .. /> //registration info: <input name='email' .. /> <input name='pass' .. /> <input type='submit' /> </form ..> 

А также создать тип формы или smthng. Любые советы о том, как обращаться с submit?

ps Я использую symfony / form: ^ 3.0

Solutions Collecting From Web of "Как объединить и обработать 2 формы symfony в одном?"

С формами Symfony все это тип формы. Таким образом, один из них имеет корневой тип с дочерними типами. Каждый тип ребенка может иметь другие дочерние типы и т. Д.

Таким образом, в этом случае у вас есть 2 типа форм: SignupFormType и HouseRentFormType . Вы можете использовать их как дочерние типы новой формы:

 $form = $formBuilder ->add('signup', SignupFormType::class) ->add('house_rent', HouseRentFormType::class) ->getForm(); 

Я хотел бы продлить ответ @Wouter J, потому что это не помогло мне, как выше.

Я должен был определить data_class в formbuilder:

 class SignupHouseRentFormType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('signup', SignupFormType::class, array( 'data_class' => Signup::class )) ->add('house_rent', HouseRentFormType::class, array( 'data_class' => HouseRent::class )); } } 

то в контроллере мне пришлось использовать такое же пространство имен для привязки данных:

 class SignupHouseRentController extends Controller { public function indexAction(Request $request) { $signup = new Signup(); $houseRent = new HouseRent(); $mergedData = array( 'signup' => $signup, 'houseRent' => $houseRent ); $form = $this->createForm(SignupHouseRentFormType::class, $mergedData); $form->handleRequest($request); } }