У меня есть 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
С формами 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); } }